--- Include/unicodeobject.h.orig 2004-11-22 14:02:29.000000000 +0100 +++ Include/unicodeobject.h 2004-12-03 12:30:37.912527544 +0100 @@ -300,15 +300,36 @@ #include -#define Py_UNICODE_ISSPACE(ch) iswspace(ch) +#include +#define w_wrapper(f) wint_t static inline p##f(wint_t ch) { \ + char *saved_locale = strdup(setlocale(LC_CTYPE, NULL)); \ + wint_t val; \ + if (!saved_locale) \ + Py_FatalError("not enough memory to save locale"); \ + setlocale(LC_CTYPE, ""); \ + val = f(ch); \ + setlocale(LC_CTYPE, saved_locale); /* Restore locale */ \ + free(saved_locale); \ + return val; \ +} + +w_wrapper(iswspace) +w_wrapper(iswlower) +w_wrapper(iswupper) +w_wrapper(towlower) +w_wrapper(towupper) +w_wrapper(iswalpha) + + +#define Py_UNICODE_ISSPACE(ch) piswspace(ch) -#define Py_UNICODE_ISLOWER(ch) iswlower(ch) -#define Py_UNICODE_ISUPPER(ch) iswupper(ch) +#define Py_UNICODE_ISLOWER(ch) piswlower(ch) +#define Py_UNICODE_ISUPPER(ch) piswupper(ch) #define Py_UNICODE_ISTITLE(ch) _PyUnicode_IsTitlecase(ch) #define Py_UNICODE_ISLINEBREAK(ch) _PyUnicode_IsLinebreak(ch) -#define Py_UNICODE_TOLOWER(ch) towlower(ch) -#define Py_UNICODE_TOUPPER(ch) towupper(ch) +#define Py_UNICODE_TOLOWER(ch) ptowlower(ch) +#define Py_UNICODE_TOUPPER(ch) ptowupper(ch) #define Py_UNICODE_TOTITLE(ch) _PyUnicode_ToTitlecase(ch) #define Py_UNICODE_ISDECIMAL(ch) _PyUnicode_IsDecimalDigit(ch) @@ -319,7 +339,7 @@ #define Py_UNICODE_TODIGIT(ch) _PyUnicode_ToDigit(ch) #define Py_UNICODE_TONUMERIC(ch) _PyUnicode_ToNumeric(ch) -#define Py_UNICODE_ISALPHA(ch) iswalpha(ch) +#define Py_UNICODE_ISALPHA(ch) piswalpha(ch) #else