diff --git a/lang/cem/cemcom/idf.c b/lang/cem/cemcom/idf.c index cd595639f..8a48ccf9a 100644 --- a/lang/cem/cemcom/idf.c +++ b/lang/cem/cemcom/idf.c @@ -63,11 +63,18 @@ idf_hashed(tg, size, hc) register struct idf **hook = &idf_hashtable[hc], *notch; while ((notch = *hook)) { - register cmp = strcmp(tg, notch->id_text); + register char *s1 = tg; + register char *cp = notch->id_text; + register int cmp; + + while (!(cmp = (*s1 - *cp++))) { + if (*s1++ == '\0') { + break; + } + } if (cmp < 0) break; - else if (cmp == 0) { /* suppose that special identifiers, as "setjmp", are already inserted @@ -75,8 +82,7 @@ idf_hashed(tg, size, hc) sp_occurred[notch->id_special] = 1; return notch; } - else - hook = ¬ch->next; + hook = ¬ch->next; } /* a new struct idf must be inserted at the hook */ notch = new_idf();