The functions islower() and isupper() crash if the argument (which is supposed to be an int) is greater than 0xFF.
#include <stdio.h>
#include <ctype.h>
int main(int argc, char *argv[])
{
printf("islower(%d) -> %d\n",'A',islower('A'));
printf("islower(%d) -> %d\n",'a',islower('a'));
printf("islower(%d) -> %d\n",0x9268,islower(0x9268)); // CRASH
}
The obvious solution is to call them as:
islower(x & 0xFF)
But this might be an issue with existing code or libraries. The proper way would be to perform a check within the islower() and isupper() function themselves.
I didn't check the other isxxx() functions.