fix regex on arm
authorRich Felker <dalias@aerifal.cx>
Fri, 25 May 2012 14:45:05 +0000 (10:45 -0400)
committerRich Felker <dalias@aerifal.cx>
Fri, 25 May 2012 14:45:05 +0000 (10:45 -0400)
TRE has a broken assumption that wchar_t is signed, which is a sane
expectation, but not required by the standard, and false on ARM's ABI.

i leave tre_char_t as wchar_t for now, since a pointer to it is
directly passed to functions that need pointer to wchar_t. it does not
seem to break anything. and since the maximum unicode scalar value is
0x10ffff, just use that explicitly rather than using the max value of
any particular C type.

src/regex/tre.h

index d6e1c2a7c2d78e14cbc586240ac5c43e996a8f00..f4e5ab12b1ec39e5041bc6271a9348081496ecc3 100644 (file)
@@ -50,7 +50,7 @@ typedef wchar_t tre_char_t;
 
 /* Wide characters. */
 typedef wint_t tre_cint_t;
-#define TRE_CHAR_MAX WCHAR_MAX
+#define TRE_CHAR_MAX 0x10ffff
 
 #define tre_isalnum iswalnum
 #define tre_isalpha iswalpha