diff --git a/core/os/stat_windows.odin b/core/os/stat_windows.odin index 6b8fa012f..f76efa60f 100644 --- a/core/os/stat_windows.odin +++ b/core/os/stat_windows.odin @@ -11,14 +11,14 @@ full_path_from_name :: proc(name: string, allocator := context.allocator) -> (pa } p := win32.utf8_to_utf16(name, context.temp_allocator); buf := make([dynamic]u16, 100, allocator); + defer delete(buf); for { n := win32.GetFullPathNameW(raw_data(p), u32(len(buf)), raw_data(buf), nil); if n == 0 { - delete(buf); return "", Errno(win32.GetLastError()); } if n <= u32(len(buf)) { - return win32.utf16_to_utf8(buf[:n]), ERROR_NONE; + return win32.utf16_to_utf8(buf[:n], allocator), ERROR_NONE; } resize(&buf, len(buf)*2); }