authorgravatar for squeek502@hotmail.comRyan Liptak <squeek502@hotmail.com> 2022-02-03 22:56:06-08:00
committergravatar for johnnymarler@gmail.comJonathan Marler <johnnymarler@gmail.com> 2022-05-11 18:40:53-06:00
loge70cb04f89005d08d837b062e8c10a3a1b406a6c
treecdd1dab28f4f227f3df1f39e2b591ab0d0ccc4e3
parentb2b48fbf2cf84744e5d154b7d4f62b298f725f2b

EnvMapWindows: Fix putUtf8 not uppercasing keys


1 files changed, 9 insertions(+), 4 deletions(-)

lib/std/process.zig+9-4
......@@ -141,8 +141,13 @@ pub const EnvMapWindows = struct {
141141 var name_utf16_buf = try std.ArrayListAligned(u8, @alignOf(u16)).initCapacity(self.allocator, name.len);
142142 errdefer name_utf16_buf.deinit();
143143
144 var uppercased_len = try std.unicode.utf8ToUtf16LeWriter(name_utf16_buf.writer(), name);
145 assert(uppercased_len == name_utf16_buf.items.len);
144 const bytes_written = try std.unicode.utf8ToUtf16LeWriter(name_utf16_buf.writer(), name);
145 var name_utf16 = name_utf16_buf.items[0..bytes_written];
146
147 // uppercase in place
148 var name_uppercased_utf16 = std.mem.bytesAsSlice(u16, name_utf16);
149 const uppercased_len = uppercaseName(name_uppercased_utf16, name_uppercased_utf16);
150 assert(uppercased_len == name_uppercased_utf16.len);
146151
147152 break :uppercased name_utf16_buf.toOwnedSlice();
148153 };
......@@ -278,7 +283,7 @@ test "EnvMapWindows" {
278283
279284 // both put methods
280285 try env_map.putUtf16NoClobber(std.unicode.utf8ToUtf16LeStringLiteral("Path"), std.unicode.utf8ToUtf16LeStringLiteral("something"));
281 try env_map.putUtf8("КИРИЛЛИЦА", "something else");
286 try env_map.putUtf8("КИРиллИЦА", "something else");
282287 try env_map.reallocUppercaseBuf();
283288
284289 try testing.expectEqual(@as(EnvMap.Size, 2), env_map.count());
......@@ -292,7 +297,7 @@ test "EnvMapWindows" {
292297 var it = env_map.iterator();
293298 var count: EnvMap.Size = 0;
294299 while (it.next()) |entry| {
295 const is_an_expected_name = std.mem.eql(u8, "Path", entry.name) or std.mem.eql(u8, "КИРИЛЛИЦА", entry.name);
300 const is_an_expected_name = std.mem.eql(u8, "Path", entry.name) or std.mem.eql(u8, "КИРиллИЦА", entry.name);
296301 try testing.expect(is_an_expected_name);
297302 count += 1;
298303 }