diff --git a/releasenotes.md b/releasenotes.md index e41884d6f..6cfac76e5 100644 --- a/releasenotes.md +++ b/releasenotes.md @@ -50,6 +50,7 @@ - Miscompilation of do-while when the while starts with a branch #2394. - Compiler assert when calling unassigned CT functions #2418. - Fixed crash in header generation when exporting functions with const enums (#2384). +- Fix incorrect panic message when slicing with negative size. ### Stdlib changes - Add `==` to `Pair`, `Triple` and TzDateTime. Add print to `Pair` and `Triple`. diff --git a/src/compiler/llvm_codegen_expr.c b/src/compiler/llvm_codegen_expr.c index ab45bdb48..f86380748 100644 --- a/src/compiler/llvm_codegen_expr.c +++ b/src/compiler/llvm_codegen_expr.c @@ -2791,6 +2791,7 @@ static void llvm_emit_slice_values(GenContext *c, Expr *slice, BEValue *parent_r llvm_emit_int_comp(c, &excess, &start_index, &end_index, BINARYOP_GT); BEValue actual_end_len = end_index; actual_end_len.value = llvm_emit_sub_int(c, end_index.type, end_index.value, start_index.value, slice->span); + actual_end_len.type = type_isz; llvm_emit_panic_if_true(c, &excess, "Negative slice length", slice->span, "Negative value (%d) given for slice length.", &actual_end_len, NULL); if (len.value) {