]> git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - ir.c
hopefully fix an off-by-1 vararg copy issue
[xonotic/gmqcc.git] / ir.c
diff --git a/ir.c b/ir.c
index e794860f078a998cbe1694799574cc55fec99d7a..a28b07e95f3452d5b68999a1005799fbd41480c9 100644 (file)
--- a/ir.c
+++ b/ir.c
@@ -3151,14 +3151,14 @@ static bool gen_function_varargs_copy(ir_function *self)
     stmt.o3.s1 = 0;
     maxparams = numparams + self->max_varargs;
     for (i = numparams; i < maxparams; ++i) {
-        if (i <= 8) {
+        if (i < 8) {
             stmt.o1.u1 = OFS_PARM0 + 3*i;
             stmt.o2.u1 = ir_value_code_addr(self->locals[i]);
             code_push_statement(&stmt, self->context.line);
             continue;
         }
-        ext = i - 9;
-        if (ext >= vec_size(ir->extparams))
+        ext = i - 8;
+        while (ext >= vec_size(ir->extparams))
             ir_gen_extparam(ir);
 
         ep = ir->extparams[ext];