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