patch from Jan Rejlek <jr@apex-lib.cz> to fix Bug 677692
[fw/sdcc] / as / mcs51 / asexpr.c
index dd9b0b8cc9ac919afdfb6cb55bc0e6b95f85570f..26aea4b0a015f474d23a3f33ae7e8533c999e942 100644 (file)
@@ -12,9 +12,6 @@
 #include <stdio.h>
 #include <setjmp.h>
 #include <string.h>
-#if !defined(_MSC_VER)
-#include <alloc.h>
-#endif
 #include "asm.h"
 
 /*)Module      asexpr.c
@@ -30,7 +27,7 @@
  *
  *     asexpr.c contains the following functions:
  *             VOID    abscheck()
- *             addr_t  absexpr()
+ *             Addr_T  absexpr()
  *             VOID    clrexpr()
  *             int     digit()
  *             VOID    expr()
@@ -232,7 +229,7 @@ int n;
         unget(c);
 }
 
-/*)Function    addr_t  absexpr()
+/*)Function    Addr_T  absexpr()
  *
  *     The function absexpr() evaluates an expression, verifies it
  *     is absolute (i.e. not position dependent or relocatable), and
@@ -254,7 +251,7 @@ int n;
  *             a 'r' error is reported.
  */
 
-addr_t
+Addr_T
 absexpr()
 {
         struct expr e;
@@ -341,7 +338,7 @@ register struct expr *esp;
         if (c == '-') {
                 expr(esp, 100);
                 abscheck(esp);
-                esp->e_addr = -esp->e_addr;
+                esp->e_addr = 0-esp->e_addr;
                 return;
         }
         if (c == '~') {