| ... | @@ -141,8 +141,13 @@ pub const EnvMapWindows = struct { | ... | @@ -141,8 +141,13 @@ pub const EnvMapWindows = struct { |
| 141 | var name_utf16_buf = try std.ArrayListAligned(u8, @alignOf(u16)).initCapacity(self.allocator, name.len); | 141 | var name_utf16_buf = try std.ArrayListAligned(u8, @alignOf(u16)).initCapacity(self.allocator, name.len); |
| 142 | errdefer name_utf16_buf.deinit(); | 142 | errdefer name_utf16_buf.deinit(); |
| 143 | | 143 | |
| 144 | var uppercased_len = try std.unicode.utf8ToUtf16LeWriter(name_utf16_buf.writer(), name); | 144 | const bytes_written = try std.unicode.utf8ToUtf16LeWriter(name_utf16_buf.writer(), name); |
| 145 | assert(uppercased_len == name_utf16_buf.items.len); | 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); |
| 146 | | 151 | |
| 147 | break :uppercased name_utf16_buf.toOwnedSlice(); | 152 | break :uppercased name_utf16_buf.toOwnedSlice(); |
| 148 | }; | 153 | }; |
| ... | @@ -278,7 +283,7 @@ test "EnvMapWindows" { | ... | @@ -278,7 +283,7 @@ test "EnvMapWindows" { |
| 278 | | 283 | |
| 279 | // both put methods | 284 | // both put methods |
| 280 | try env_map.putUtf16NoClobber(std.unicode.utf8ToUtf16LeStringLiteral("Path"), std.unicode.utf8ToUtf16LeStringLiteral("something")); | 285 | 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"); |
| 282 | try env_map.reallocUppercaseBuf(); | 287 | try env_map.reallocUppercaseBuf(); |
| 283 | | 288 | |
| 284 | try testing.expectEqual(@as(EnvMap.Size, 2), env_map.count()); | 289 | try testing.expectEqual(@as(EnvMap.Size, 2), env_map.count()); |
| ... | @@ -292,7 +297,7 @@ test "EnvMapWindows" { | ... | @@ -292,7 +297,7 @@ test "EnvMapWindows" { |
| 292 | var it = env_map.iterator(); | 297 | var it = env_map.iterator(); |
| 293 | var count: EnvMap.Size = 0; | 298 | var count: EnvMap.Size = 0; |
| 294 | while (it.next()) |entry| { | 299 | 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); |
| 296 | try testing.expect(is_an_expected_name); | 301 | try testing.expect(is_an_expected_name); |
| 297 | count += 1; | 302 | count += 1; |
| 298 | } | 303 | } |