Do not use __STDC_ISO_10646__ with Cygwin
Cygwin defines this since 1.7.8, but Cygwin wchar_t is only 16-bit while this code seems to assume 32-bit wchar_t. So, either some incorrect assumptions need to be fixed in the STDC_ISO_10646 code paths, or the conditionals need to also be guarded && (SIZEOF_WCHAR_T == 4).
Reported by SLao: http://article.gmane.org/gmane.os.cygwin.ports.general/1330