diff --git a/src/InternPool.zig b/src/InternPool.zig index 7df03f7dca76b86b765068a22f9e150d0f537e7b..aef6f6f036d13e50925662d7ddfbcab37d978de7 100644 --- a/src/InternPool.zig +++ b/src/InternPool.zig @@ -7899,7 +7899,7 @@ pub fn get(ip: *InternPool, gpa: Allocator, io: Io, tid: Zcu.PerThread.Id, key: repeated: { switch (aggregate.storage) { - .bytes => |bytes| for (bytes.toSlice(len, ip)[1..]) |byte| + .bytes => |bytes| for (bytes.toSlice(len_including_sentinel, ip)[1..]) |byte| if (byte != bytes.at(0, ip)) break :repeated, .elems => |elems| for (elems[1..@intCast(len_including_sentinel)]) |elem| if (elem != elems[0]) break :repeated, diff --git a/test/behavior/comptime_memory.zig b/test/behavior/comptime_memory.zig index f72669473778d517cad3200d88fd304d25c4a92a..e88fe23c86c294627dad536044be9528416edd1d 100644 --- a/test/behavior/comptime_memory.zig +++ b/test/behavior/comptime_memory.zig @@ -618,3 +618,13 @@ test "comptime store to sentinel-terminated array in an extern struct" { assert(x.a[2] == 0); } } + +test "comptime store to repeated string bytes" { + comptime { + var x = "aa".*; + x[0] = 'b'; + assert(x[0] == 'b'); + assert(x[1] == 'a'); + assert(x[2] == 0); + } +}