ID: 25745 Updated by: [EMAIL PROTECTED] Reported By: vesely at tana dot it -Status: Assigned +Status: Feedback Bug Type: *Languages/Translation PHP Version: 4.3.2 Assigned To: moriyoshi New Comment:
Hmm, please put the correct OS name you confirmed the bug with. Previous Comments: ------------------------------------------------------------------------ [2003-10-03 11:43:40] [EMAIL PROTECTED] Yet another casting problem :) ------------------------------------------------------------------------ [2003-10-03 11:41:03] vesely at tana dot it Description: ------------ The upper half of the codes are badly reported, e.g ctype_alpha("è") returns true even under C locale. As a workaround one may call ctype_alpha(ord("è")), which works correctly. Alternatively, the following patch fixes that: --- php-4.3.2/ext/ctype/ctype.c% 2003-10-03 13:13:46.870457000 +0200 +++ php-4.3.2/ext/ctype/ctype.c 2003-10-03 13:13:46.880455000 +0200 @@ -100,7 +100,7 @@ RETURN_BOOL(iswhat(Z_LVAL_P(c))); \ case IS_STRING: \ { \ - char *p; \ + unsigned char *p; \ int n, len; \ p=Z_STRVAL_P(c); \ len = Z_STRLEN_P(c); \ Ciao Ale --- below I list character type functions for easing bug searches ctype_alnum ctype_alpha ctype_cntrl ctype_digit ctype_graph ctype_lower ctype_print ctype_punct ctype_space ctype_upper ctype_xdigit Reproduce code: --------------- <?php $ctype_funcs = array( "alnum", "alpha", "cntrl", "digit", "graph", "lower", "print", "punct", "space", "upper", "xdigit"); $failed = 0; reset($ctype_funcs); while ($name = current($ctype_funcs)) { $test = "\$failed += ( (ctype_$name(%d) ? 1 : 0) != (ctype_$name(chr(%d)) ? 1 : 0) ) ? 1 : 0;"; for ($i = 0; $i < 256; ++$i) eval(sprintf($test, $i, $i)); next($ctype_funcs); } print "$failed"; ?> Expected result: ---------------- 0 Actual result: -------------- 817 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=25745&edit=1