ID:               25745
 Updated by:       [EMAIL PROTECTED]
 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 http://snaps.php.net/.
 
In case this was a documentation problem, the fix will show up soon at
http://www.php.net/manual/.

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 PROTECTED]

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



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

[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

Reply via email to