#25745 [NEW]: Character type functions fail on negative chars

From: Date: Fri, 03 Oct 2003 15:41:03 +0000
Subject: #25745 [NEW]: Character type functions fail on negative chars
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-48499@lists.php.net to get a copy of this message
From: vesely at tana dot it Operating system: PHP version: 4.3.2 PHP Bug Type: *Languages/Translation Bug description: Character type functions fail on negative chars 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 bug report at http://bugs.php.net/?id=25745&edit=1 -- Try a CVS snapshot (php4): http://bugs.php.net/fix.php?id=25745&r=trysnapshot4 Try a CVS snapshot (php5): http://bugs.php.net/fix.php?id=25745&r=trysnapshot5 Fixed in CVS: http://bugs.php.net/fix.php?id=25745&r=fixedcvs Fixed in release: http://bugs.php.net/fix.php?id=25745&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=25745&r=needtrace Try newer version: http://bugs.php.net/fix.php?id=25745&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=25745&r=support Expected behavior: http://bugs.php.net/fix.php?id=25745&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=25745&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=25745&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=25745&r=globals PHP 3 support discontinued: http://bugs.php.net/fix.php?id=25745&r=php3 Daylight Savings: http://bugs.php.net/fix.php?id=25745&r=dst IIS Stability: http://bugs.php.net/fix.php?id=25745&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=25745&r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=25745&r=float

« previous php.bugs (#48499) next »