@@ -729,8 +729,8 @@ pub const GetCurrentDirectoryError = error{
729729/// The result is a slice of `buffer`, indexed from 0.
730730/// The result is encoded as [WTF-8](https://simonsapin.github.io/wtf-8/).
731731pub fn GetCurrentDirectory (buffer : []u8 ) GetCurrentDirectoryError ! []u8 {
732- var wtf16le_buf : [PATH_MAX_WIDE ]u16 = undefined ;
733- const result = kernel32 .GetCurrentDirectoryW (wtf16le_buf .len , & wtf16le_buf );
732+ var wtf16le_buf : [PATH_MAX_WIDE : 0 ]u16 = undefined ;
733+ const result = kernel32 .GetCurrentDirectoryW (wtf16le_buf .len + 1 , & wtf16le_buf );
734734 if (result == 0 ) {
735735 switch (GetLastError ()) {
736736 else = > | err | return unexpectedError (err ),
@@ -1190,7 +1190,14 @@ pub fn SetFilePointerEx_CURRENT_get(handle: HANDLE) SetFilePointerError!u64 {
11901190 return @as (u64 , @bitCast (result ));
11911191}
11921192
1193- pub fn QueryObjectName (handle : HANDLE , out_buffer : []u16 ) ! []u16 {
1193+ pub const QueryObjectNameError = error {
1194+ AccessDenied ,
1195+ InvalidHandle ,
1196+ NameTooLong ,
1197+ Unexpected ,
1198+ };
1199+
1200+ pub fn QueryObjectName (handle : HANDLE , out_buffer : []u16 ) QueryObjectNameError ! []u16 {
11941201 const out_buffer_aligned = mem .alignInSlice (out_buffer , @alignOf (OBJECT_NAME_INFORMATION )) orelse return error .NameTooLong ;
11951202
11961203 const info = @as (* OBJECT_NAME_INFORMATION , @ptrCast (out_buffer_aligned ));
@@ -2761,7 +2768,7 @@ pub fn loadWinsockExtensionFunction(comptime T: type, sock: ws2_32.SOCKET, guid:
27612768pub fn unexpectedError (err : Win32Error ) UnexpectedError {
27622769 if (std .posix .unexpected_error_tracing ) {
27632770 // 614 is the length of the longest windows error description
2764- var buf_wstr : [614 ]WCHAR = undefined ;
2771+ var buf_wstr : [614 : 0 ]WCHAR = undefined ;
27652772 const len = kernel32 .FormatMessageW (
27662773 FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS ,
27672774 null ,
0 commit comments