static
int checkCharRefNumber(int result)
{
- /* FIXME maybe exclude surrogates as well */
- if ((result < 0x80 && latin1_encoding.type[result] == BT_NONXML)
- || result == 0xFFFE
- || result == 0xFFFF)
+ switch (result >> 8) {
+ case 0xD8: case 0xD9: case 0xDA: case 0xDB:
+ case 0xDC: case 0xDD: case 0xDE: case 0xDF:
return -1;
+ case 0:
+ if (latin1_encoding.type[result] == BT_NONXML)
+ return -1;
+ break;
+ case 0xFF:
+ if (result == 0xFFFE || result == 0xFFFF)
+ return -1;
+ break;
+ }
return result;
}