|
@@ -11,24 +11,24 @@ lookup_env :: proc(key: string, allocator := context.allocator) -> (value: strin
|
|
|
return
|
|
|
}
|
|
|
wkey := win32.utf8_to_wstring(key)
|
|
|
- b := make([dynamic]u16, 100, context.temp_allocator)
|
|
|
- for {
|
|
|
- n := win32.GetEnvironmentVariableW(wkey, raw_data(b), u32(len(b)))
|
|
|
- if n == 0 {
|
|
|
- err := win32.GetLastError()
|
|
|
- if err == u32(ERROR_ENVVAR_NOT_FOUND) {
|
|
|
- return "", false
|
|
|
- }
|
|
|
+ n := win32.GetEnvironmentVariableW(wkey, nil, 0)
|
|
|
+ if n == 0 {
|
|
|
+ err := win32.GetLastError()
|
|
|
+ if err == u32(ERROR_ENVVAR_NOT_FOUND) {
|
|
|
+ return "", false
|
|
|
}
|
|
|
-
|
|
|
- if n <= u32(len(b)) {
|
|
|
- value, _ = win32.utf16_to_utf8(b[:n], allocator)
|
|
|
- found = true
|
|
|
- return
|
|
|
+ }
|
|
|
+ b := make([dynamic]u16, n, context.temp_allocator)
|
|
|
+ n = win32.GetEnvironmentVariableW(wkey, raw_data(b), u32(len(b)))
|
|
|
+ if n == 0 {
|
|
|
+ err := win32.GetLastError()
|
|
|
+ if err == u32(ERROR_ENVVAR_NOT_FOUND) {
|
|
|
+ return "", false
|
|
|
}
|
|
|
-
|
|
|
- resize(&b, len(b)*2)
|
|
|
}
|
|
|
+ value, _ = win32.utf16_to_utf8(b[:n], allocator)
|
|
|
+ found = true
|
|
|
+ return
|
|
|
}
|
|
|
|
|
|
|