diff options
| author | Feoramund <161657516+Feoramund@users.noreply.github.com> | 2024-06-08 17:05:00 -0400 |
|---|---|---|
| committer | Feoramund <161657516+Feoramund@users.noreply.github.com> | 2024-06-08 17:05:00 -0400 |
| commit | 49f147cc86d06ee60dd6936404b18f952196d9a8 (patch) | |
| tree | f83695ae38cfd16a4cf7c519eba7401a347f0d28 /src | |
| parent | e5bf6fd3aa442c746c9540e97fc76110b3f6ee06 (diff) | |
Prevent panic when `swizzle` called with < 2 indices
The requirement for at least 2 indices has been sourced from
`lb_addr_swizzle` in `llvm_backend_general.cpp`, where there is an
assert to ensure the swizzle_count is `1 < n <= 4`.
Diffstat (limited to 'src')
| -rw-r--r-- | src/check_builtin.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/check_builtin.cpp b/src/check_builtin.cpp index eef925d94..98c695a2c 100644 --- a/src/check_builtin.cpp +++ b/src/check_builtin.cpp @@ -2419,6 +2419,9 @@ gb_internal bool check_builtin_procedure(CheckerContext *c, Operand *operand, As if (arg_count > max_count) { error(call, "Too many 'swizzle' indices, %td > %td", arg_count, max_count); return false; + } else if (arg_count < 2) { + error(call, "Not enough 'swizzle' indices, %td < 2", arg_count); + return false; } if (type->kind == Type_Array) { |