]> git.sur5r.net Git - cc65/commitdiff
Fixed a bug: The compiler aborted with an internal error if a non function
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sun, 17 Jul 2005 09:49:34 +0000 (09:49 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sun, 17 Jul 2005 09:49:34 +0000 (09:49 +0000)
was called as a function after printing the diagnostic.

git-svn-id: svn://svn.cc65.org/cc65/trunk@3526 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/cc65/expr.c

index 28be7e52648e054935610474dff24577dfa07752..8c1218a2b3f39dec8e1429b7c4978c2959ea4adc 100644 (file)
@@ -639,7 +639,7 @@ static void Primary (ExprDesc* E)
        Error ("Preprocessor expression expected");
        ED_MakeConstAbsInt (E, 1);
        return;
-    }
+    }       
 
     switch (CurTok.Tok) {
 
@@ -819,7 +819,7 @@ static void ArrayRef (ExprDesc* Expr)
      * address. This is true for most arrays and will produce a lot better
      * code. Check if this is a const base address.
      */
-    ConstBaseAddr = ED_IsRVal (Expr) && 
+    ConstBaseAddr = ED_IsRVal (Expr) &&
                     (ED_IsLocConst (Expr) || ED_IsLocStack (Expr));
 
     /* If we have a constant base, we delay the address fetch */
@@ -1123,6 +1123,9 @@ static void StructRef (ExprDesc* Expr)
 static void hie11 (ExprDesc *Expr)
 /* Handle compound types (structs and arrays) */
 {
+    /* Name value used in invalid function calls */
+    static const char IllegalFunc[] = "illegal_function_call";
+
     /* Evaluate the lhs */
     Primary (Expr);
 
@@ -1144,10 +1147,10 @@ static void hie11 (ExprDesc *Expr)
                     Error ("Illegal function call");
                     /* Force the type to be a implicitly defined function, one
                      * returning an int and taking any number of arguments.
-                     * Since we don't have a name, place it at absolute address
-                     * zero.
+                     * Since we don't have a name, invent one.
                      */
                     ED_MakeConstAbs (Expr, 0, GetImplicitFuncType ());
+                    Expr->Name = (long) IllegalFunc;
                 }
                 /* Call the function */
                 FunctionCall (Expr);