#31324 [Bgs->Opn]: function strlen miscounts

From: Date: Wed, 29 Dec 2004 22:22:51 +0000
Subject: #31324 [Bgs->Opn]: function strlen miscounts
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-71255@lists.php.net to get a copy of this message
ID: 31324 User updated by: phpbug at tore dot cc Reported By: phpbug at tore dot cc -Status: Bogus +Status: Open Bug Type: Strings related Operating System: Solaris 10 PHP Version: 5.0.2 New Comment: Are 64bit processors not supported by php? Which machine architecture is 'my system'? The php is compiled with gcc2 AND gcc3. With solaris 9 AND solaris 10. The same trouble occurs. So I need to have the code for 'strlen' in php extracted before I can figure out where the source for the trouble is. A simple C-program using string.h's strlen cause no troule at all. Previous Comments: ------------------------------------------------------------------------ [2004-12-29 21:42:53] iliaa@php.net Sounds like either a compiler or libc bug. I cannot replicate this on my systems either. ------------------------------------------------------------------------ [2004-12-29 19:13:28] phpbug at tore dot cc I might add that I tried php-5.0.3 on an intel-based solaris 10 machine and there were no problems with the strlen. ------------------------------------------------------------------------ [2004-12-29 07:34:41] phpbug at tore dot cc I have used gcc2 and gcc3 to compile. The machine is a sparc. The problem occurs on solaris 9 and solaris 10. If you suspect that this is a solaris problem, can you extract the code for 'strlen' in php. I could make some tests in C.... ------------------------------------------------------------------------ [2004-12-28 23:59:37] derick@php.net It still works fine for me on Linux. Which compiler did you use to compile PHP (gcc or sun workshop), and what kind of platform do you use? intel (32/64), sparc... ------------------------------------------------------------------------ [2004-12-28 23:40:36] phpbug at tore dot cc Sorry, my mistake! It seems to work on one char long strings. I made a better script (still avoiding loops...). <?php $s=pack("C*",0x8e,0x8f); $t=pack("C*",0x8e); $u=pack("C*",0x8e,0x8f,0x90); print "The variable s has the length: " . strlen($s) . "\n"; print "The variable t has the length: " . strlen($t) . "\n"; print "The variable u has the length: " . strlen($u) . "\n"; ?> Result: The variable s has the length: 1 The variable t has the length: 1 The variable u has the length: 2 The result should be: The variable s has the length: 2 The variable t has the length: 1 The variable u has the length: 3 Since s=2 chars, t=1 char and u 3 chars long. Lets try another test with 7 bit chars. <?php $s=pack("C*",0x30,0x31); $t=pack("C*",0x30); $u=pack("C*",0x30,0x31,0x32); print "The variable s has the length: " . strlen($s) . "\n"; print "The variable t has the length: " . strlen($t) . "\n"; print "The variable u has the length: " . strlen($u) . "\n"; ?> Result: The variable s has the length: 2 The variable t has the length: 1 The variable u has the length: 3 As expected. No problem with low values on the chars. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/31324 -- Edit this bug report at http://bugs.php.net/?id=31324&edit=1

« previous php.bugs (#71255) next »