Rewrite SimpleString::StrCmp() (3)

Take your pick :-)
Yup. So, somewhat unintuitively, this does work:

    while (n > 0 && *s1 && *s1 == *s2) {
        n--, s1++, s2++;
        if (n == 0) return 0;
    }
    return *(unsigned char *) s1 - *(unsigned char *) s2;