]> git.sur5r.net Git - cc65/commitdiff
Free expression trees when they're no longer needed
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 31 Oct 2003 20:56:40 +0000 (20:56 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 31 Oct 2003 20:56:40 +0000 (20:56 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@2594 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/ca65/expr.c
src/ca65/segment.c

index 22eace8a48b888500be546c543bc6d34b6f76e8f..b5beb8e780c2203384c0a810e842274519ba2e74 100644 (file)
@@ -923,18 +923,24 @@ long ConstExpression (void)
  * not constant.
  */
 {
+    long Val;
+
     /* Read the expression, and call finalize (exception here, since we
      * expect a const).
      */
     ExprNode* Expr = FinalizeExpr (Expression ());
 
-    /* Return the value */
+    /* Get the value */
     if (IsConstExpr (Expr)) {
-       return GetExprVal (Expr);
+       Val = GetExprVal (Expr);
     } else {
        Error (ERR_CONSTEXPR_EXPECTED);
-       return 0;
+       Val = 0;
     }
+
+    /* Free the expression tree and return the value */
+    FreeExpr (Expr);
+    return Val;
 }
 
 
@@ -1644,4 +1650,4 @@ void WriteExpr (ExprNode* Expr)
 
 
 
-                  
+
index 3e50d96ac0c6f4376bd7fc5a1dccdda2b4a14264..8fd5e356f45dfa1c2d73b4604b9f0471be2832ed 100644 (file)
@@ -370,6 +370,9 @@ void SegCheck (void)
                        }
                    }
 
+                    /* We don't need the expression tree any longer */
+                    FreeExpr (F->V.Expr);
+
                    /* Convert the fragment into a literal fragment */
                    for (I = 0; I < F->Len; ++I) {
                        F->V.Data [I] = Val & 0xFF;