]> git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - fold.c
The problem was so subtle
[xonotic/gmqcc.git] / fold.c
diff --git a/fold.c b/fold.c
index ad264e737c98a49663365cee89bdeaf2263aeba9..884e039969f569e983f87a37ba3387b5893f8155 100644 (file)
--- a/fold.c
+++ b/fold.c
@@ -383,7 +383,7 @@ static GMQCC_INLINE ast_expression *fold_op_sub(fold_t *fold, ast_value *a, ast_
 
 static GMQCC_INLINE ast_expression *fold_op_mul(fold_t *fold, ast_value *a, ast_value *b) {
     if (isfloat(a)) {
 
 static GMQCC_INLINE ast_expression *fold_op_mul(fold_t *fold, ast_value *a, ast_value *b) {
     if (isfloat(a)) {
-        if (isfloat(b)) {
+        if (isvector(b)) {
             if (fold_can_2(a, b))
                 return fold_constgen_vector(fold, vec3_mulvf(fold_immvalue_vector(b), fold_immvalue_float(a)));
         } else {
             if (fold_can_2(a, b))
                 return fold_constgen_vector(fold, vec3_mulvf(fold_immvalue_vector(b), fold_immvalue_float(a)));
         } else {
@@ -585,5 +585,6 @@ ast_expression *fold_op(fold_t *fold, const oper_info *info, ast_expression **op
         case opid2('=','='):     return fold_op_cmp    (fold, a, b, false);
         case opid2('~','P'):     return fold_op_bnot   (fold, a);
     }
         case opid2('=','='):     return fold_op_cmp    (fold, a, b, false);
         case opid2('~','P'):     return fold_op_bnot   (fold, a);
     }
+    compile_error(fold_ctx(fold), "internal error: attempted to constant for unsupported operator");
     return NULL;
 }
     return NULL;
 }