1.1 --- a/sourcepawn/compiler/sc3.c Thu Sep 14 05:34:02 2006 +0000
1.2 +++ b/sourcepawn/compiler/sc3.c Thu Sep 14 07:02:02 2006 +0000
1.3 @@ -1165,7 +1165,7 @@
1.4 }
1.5 free(heap);
1.6 if (total)
1.7 - setheap_save(total);
1.8 + setheap_save(-total*sizeof(cell));
1.9 }
1.10
1.11 static int hier13(value *lval)
1.12 @@ -1193,11 +1193,11 @@
1.13 if (lval->ident==iCONSTEXPR) /* load constant here */
1.14 ldconst(lval->constval,sPRI);
1.15 sc_allowtags=(short)POPSTK_I(); /* restore */
1.16 - jumplabel(flab2);
1.17 - setlabel(flab1);
1.18 heap=popsaveheaplist();
1.19 dynarray_from_heaplist(heap);
1.20 pushheaplist();
1.21 + jumplabel(flab2);
1.22 + setlabel(flab1);
1.23 needtoken(':');
1.24 if (hier13(&lval2))
1.25 rvalue(&lval2);
1.26 @@ -1215,9 +1215,9 @@
1.27 /* ??? if both are arrays, should check dimensions */
1.28 if (!matchtag(lval->tag,lval2.tag,FALSE))
1.29 error(213); /* tagname mismatch ('true' and 'false' expressions) */
1.30 - setlabel(flab2);
1.31 heap=popsaveheaplist();
1.32 dynarray_from_heaplist(heap);
1.33 + setlabel(flab2);
1.34 if (array1 && array2) {
1.35 markheap(HEAPUSE_DYNAMIC, 0);
1.36 }