mirror of
https://github.com/ziglang/zig.git
synced 2026-02-12 20:37:54 +00:00
Calculate WTF-8 length before converting instead of converting into an intermediate buffer on the stack
This commit is contained in:
parent
c06fecd466
commit
69007f0961
@ -1349,13 +1349,11 @@ pub fn realpathW(self: Dir, pathname: []const u16, out_buffer: []u8) RealPathErr
|
||||
|
||||
var wide_buf: [w.PATH_MAX_WIDE]u16 = undefined;
|
||||
const wide_slice = try w.GetFinalPathNameByHandle(h_file, .{}, &wide_buf);
|
||||
var big_out_buf: [fs.max_path_bytes]u8 = undefined;
|
||||
const end_index = std.unicode.wtf16LeToWtf8(&big_out_buf, wide_slice);
|
||||
if (end_index > out_buffer.len)
|
||||
const len = std.unicode.calcWtf8Len(wide_slice);
|
||||
if (len > out_buffer.len)
|
||||
return error.NameTooLong;
|
||||
const result = out_buffer[0..end_index];
|
||||
@memcpy(result, big_out_buf[0..end_index]);
|
||||
return result;
|
||||
const end_index = std.unicode.wtf16LeToWtf8(out_buffer, wide_slice);
|
||||
return out_buffer[0..end_index];
|
||||
}
|
||||
|
||||
pub const RealPathAllocError = RealPathError || Allocator.Error;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user