]> git.sur5r.net Git - cc65/commitdiff
Fixed the cc65 code that handled an addition of a pointer to a 32-bit offset.
authorGreg King <gregdk@users.sf.net>
Thu, 31 Dec 2015 22:41:48 +0000 (17:41 -0500)
committerGreg King <gregdk@users.sf.net>
Thu, 31 Dec 2015 22:41:48 +0000 (17:41 -0500)
It didn't demote the offset to int because it looked at the pointer (instead of the offset) which already was 16 bits.

src/cc65/expr.c

index 29e5771d45f72a698231b43df648e46d045e22cc..34cf550a2e780b7e59b330297024930cd9d004e0 100644 (file)
@@ -2390,7 +2390,6 @@ static void parseadd (ExprDesc* Expr)
     Type* lhst;                 /* Type of left hand side */
     Type* rhst;                 /* Type of right hand side */
 
-
     /* Skip the PLUS token */
     NextToken ();
 
@@ -2573,7 +2572,7 @@ static void parseadd (ExprDesc* Expr)
                 flags = CF_PTR;
             } else if (IsClassInt (lhst) && IsClassPtr (rhst)) {
                 /* Left is int, right is pointer, must scale lhs */
-                g_tosint (TypeOf (rhst));       /* Make sure, TOS is int */
+                g_tosint (TypeOf (lhst));       /* Make sure TOS is int */
                 g_swap (CF_INT);                /* Swap TOS and primary */
                 g_scale (CF_INT, CheckedPSizeOf (rhst));
                 /* Operate on pointers, result type is a pointer */
@@ -2607,7 +2606,6 @@ static void parseadd (ExprDesc* Expr)
 
     /* Condition codes not set */
     ED_MarkAsUntested (Expr);
-
 }