|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2003-10-03 11:59 UTC] vesely at tana dot it
[2003-10-03 12:13 UTC] moriyoshi@php.net
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Tue Oct 28 01:00:01 2025 UTC |
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