* as/z80/assym.c (mlookup): ignore case when looking up mnemonics
[fw/sdcc] / as / z80 / assym.c
index f57f5f994519c5ef33c51b556b5003b57bc3ed4f..77e0c2682d9feca0b91df3804b6284e23f971dff 100644 (file)
@@ -12,8 +12,9 @@
 #include <stdio.h>
 #include <setjmp.h>
 #include <string.h>
-#include <malloc.h>
+#include <stdlib.h>
 #include "asm.h"
+#include "strcmpi.h"
 
 /*)Module      assym.c
  *
@@ -181,7 +182,7 @@ char *id;
        h = hash(id);
        mp = mnehash[h];
        while (mp) {
-               if (symeq(id, mp->m_id))
+               if (as_strcmpi(id, mp->m_id) == 0)      /* JLH: case insensitive */
                        return (mp);
                mp = mp->m_mp;
        }
@@ -353,7 +354,7 @@ register char *p1, *p2;
                if (*p1++ != *p2++)
                        return (0);
 #else
-               if (ccase[*p1++] != ccase[*p2++])
+               if (ccase[(unsigned char)(*p1++)] != ccase[(unsigned char)(*p2++)])
                        return (0);
 #endif
 
@@ -382,7 +383,7 @@ register char *p1, *p2;
  *     side effects:
  *             none
  */
+
 int
 hash(p)
 register char *p;
@@ -396,7 +397,7 @@ register char *p;
 #if    CASE_SENSITIVE
                h += *p++;
 #else
-               h += ccase[*p++];
+               h += ccase[(unsigned char)(*p++)];
 #endif
 
        } while (--n);