]> git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - ir.c
don't deallocate the parser on a compile error -_-
[xonotic/gmqcc.git] / ir.c
diff --git a/ir.c b/ir.c
index 1d4d047b9e480b6e7961042cb0927b21312d5286..5e7a92324752d79f2e0baa3a167aec2a0beeb43a 100644 (file)
--- a/ir.c
+++ b/ir.c
@@ -177,7 +177,7 @@ void ir_builder_delete(ir_builder* self)
     for (i = 0; i != self->globals_count; ++i) {
         ir_value_delete(self->globals[i]);
     }
-    MEM_VECTOR_CLEAR(self, fields);
+    MEM_VECTOR_CLEAR(self, globals);
     for (i = 0; i != self->fields_count; ++i) {
         ir_value_delete(self->fields[i]);
     }
@@ -977,7 +977,7 @@ bool ir_values_overlap(const ir_value *a, const ir_value *b)
             if (++la == enda)
                 break;
         }
-        else if (lb->start < la->start)
+        else /* if (lb->start < la->start)  actually <= */
         {
             /* order: B A, move B forward
              * check if we hit the end with B
@@ -1446,11 +1446,12 @@ ir_value* ir_block_create_load_from_ent(ir_block *self, const char *label, ir_va
 
     switch (outype)
     {
-        case TYPE_FLOAT:   op = INSTR_LOAD_F;   break;
-        case TYPE_VECTOR:  op = INSTR_LOAD_V;   break;
-        case TYPE_STRING:  op = INSTR_LOAD_S;   break;
-        case TYPE_FIELD:   op = INSTR_LOAD_FLD; break;
-        case TYPE_ENTITY:  op = INSTR_LOAD_ENT; break;
+        case TYPE_FLOAT:    op = INSTR_LOAD_F;   break;
+        case TYPE_VECTOR:   op = INSTR_LOAD_V;   break;
+        case TYPE_STRING:   op = INSTR_LOAD_S;   break;
+        case TYPE_FIELD:    op = INSTR_LOAD_FLD; break;
+        case TYPE_ENTITY:   op = INSTR_LOAD_ENT; break;
+        case TYPE_FUNCTION: op = INSTR_LOAD_FNC; break;
 #if 0
         case TYPE_POINTER: op = INSTR_LOAD_I;   break;
         case TYPE_INTEGER: op = INSTR_LOAD_I;   break;