ID: 25745
Updated by: [email]moriyoshiphp.net[/email]
Reported By: vesely at tana dot it
-Status: Open
+Status: Closed
Bug Type: *Languages/Translation
-Operating System:
+Operating System: Solaris 8 (SPARC)
PHP Version: 4.3.2
Assigned To: moriyoshi
New Comment:

This bug has been fixed in CVS.

In case this was a PHP problem, snapshots of the sources are packaged
every three hours; this change will be in the next snapshot. You can
grab the snapshot at [url]http://snaps.php.net/[/url].

In case this was a doentation problem, the fix will show up soon at
[url]http://www.php.net/manual/[/url].

In case this was a PHP.net website problem, the change will show
up on the PHP.net site and on the mirror sites in short time.

Thank you for the report, and for helping us make PHP better.




Previous Comments:
------------------------------------------------------------------------

[2003-10-03 11:59:28] vesely at tana dot it

I got 817 compiling with gcc 3.2 on sun sparc solaris8,
depending on the __ctype table, results may vary.

------------------------------------------------------------------------

[2003-10-03 11:46:02] [email]moriyoshiphp.net[/email]

Hmm, please put the correct OS name you confirmed the bug with.



------------------------------------------------------------------------

[2003-10-03 11:43:40] [email]moriyoshiphp.net[/email]

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 [url]http://bugs.php.net/?id=25745&edit=1[/url]