Skip to content

Dereferencing sliced string literal triggers index out of bounds #14158

@Vexu

Description

@Vexu
test {
    const str = "foo";
    @compileLog(str[1..].*);
}
thread 19534 panic: index out of bounds: index 3, len 2
/home/vexu/Documents/zig/zig/src/value.zig:2846:78: 0x7e1bbb0 in elemValueAdvanced (zig)
                const bytes = mod.string_literal_bytes.items[str_lit.index..][0..str_lit.len];
                                                                             ^
/home/vexu/Documents/zig/zig/src/value.zig:2811:33: 0x7c0d9b5 in elemValueBuffer (zig)
        return elemValueAdvanced(val, mod, index, null, buffer) catch unreachable;
                                ^
/home/vexu/Documents/zig/zig/src/value.zig:1313:57: 0x83a1232 in writeToMemory (zig)
                    const elem_val = val.elemValueBuffer(mod, elem_i, &elem_value_buf);
                                                        ^
/home/vexu/Documents/zig/zig/src/Sema.zig:27151:35: 0x85176e2 in bitCastVal (zig)
    val.writeToMemory(old_ty, sema.mod, buffer);
                                  ^
/home/vexu/Documents/zig/zig/src/Sema.zig:31961:78: 0x87996f3 in pointerDerefExtra (zig)
        return DerefResult{ .val = try sema.bitCastVal(block, src, tv.val, tv.ty, load_ty, 0) };
                                                                             ^
/home/vexu/Documents/zig/zig/src/Sema.zig:31901:43: 0x84451ce in pointerDeref (zig)
    const res = try sema.pointerDerefExtra(block, src, ptr_val, load_ty, true);
                                          ^
/home/vexu/Documents/zig/zig/src/Sema.zig:12315:39: 0x800d18b in zirArrayCat (zig)
                (try sema.pointerDeref(block, rhs_src, rhs_val, rhs_ty)).?
                                      ^
/home/vexu/Documents/zig/zig/src/Sema.zig:894:66: 0x7ddf765 in analyzeBodyInner (zig)
            .array_cat                    => try sema.zirArrayCat(block, inst),
                                                                 ^

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugObserved behavior contradicts documented or intended behavior

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions