PHP 4.0 Bug #8195 Updated: strncasecmp returns incorrect value
| From: | stas@php.net | Date: | Tue, 12 Dec 2000 09:48:23 +0000 |
| Subject: | PHP 4.0 Bug #8195 Updated: strncasecmp returns incorrect value | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-40934@lists.php.net to get a copy of this message | ||
ID: 8195
Updated by: stas
Reported By: kway@wgate.com
Old-Status: Open
Status: Closed
Bug Type: Scripting Engine problem
Assigned To:
Comments:
Fixed in CVS, thanks.
Previous Comments:
---------------------------------------------------------------------------
[2000-12-11 16:08:35] kway@wgate.com
strncasecmp returns len1 - len2, regardless of how many
characters we wanted to compare, thus
strncasecmp('foo', 'foosomethingelse', 3) would return -13
instead of 0, as would be correct.
The following patch fixes this problem properly:
Index: zend_operators.c
===================================================================
RCS file: /repository/Zend/zend_operators.c,v
retrieving revision 1.88
diff -u -5 -r1.88 zend_operators.c
--- zend_operators.c 2000/11/21 22:41:49 1.88
+++ zend_operators.c 2000/12/11 21:06:29
@@ -1561,11 +1561,11 @@
if (c1 != c2) {
return c1 - c2;
}
}
- return len1 - len2;
+ return MIN(length, len1) - MIN(length, len2);
}
ZEND_API int zend_binary_zval_strcmp(zval *s1, zval *s2)
{
---------------------------------------------------------------------------
Full Bug description available at: http://bugs.php.net/?id=8195