tony2001 Wed Oct 4 11:12:21 2006 UTC Added files: /php-src/ext/standard/tests/strings bug39032.phpt
Modified files: /php-src/ext/standard string.c Log: fix #39032 (strcspn() stops on null character) http://cvs.php.net/viewvc.cgi/php-src/ext/standard/string.c?r1=1.601&r2=1.602&diff_format=u Index: php-src/ext/standard/string.c diff -u php-src/ext/standard/string.c:1.601 php-src/ext/standard/string.c:1.602 --- php-src/ext/standard/string.c:1.601 Wed Oct 4 10:52:32 2006 +++ php-src/ext/standard/string.c Wed Oct 4 11:12:21 2006 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: string.c,v 1.601 2006/10/04 10:52:32 tony2001 Exp $ */ +/* $Id: string.c,v 1.602 2006/10/04 11:12:21 tony2001 Exp $ */ /* Synced with php 3.0 revision 1.193 1999-06-16 [ssb] */ @@ -2306,11 +2306,12 @@ int codepts; UChar32 ch; - for (i = 0, codepts = 0 ; i < len1 ; codepts++) { + for (i = 0, codepts = 0 ; i < len1 ; ) { U16_NEXT(s1, i, len1, ch); - if (u_memchr32(s2, ch, len2)) { + if (!len2 || u_memchr32(s2, ch, len2)) { break; } + codepts++; } return codepts; } @@ -2329,7 +2330,7 @@ if (*spanp == c || p == s1_end) { return p - s1; } - } while (spanp++ < s2_end); + } while (spanp++ < (s2_end - 1)); c = *++p; } /* NOTREACHED */ http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/strings/bug39032.phpt?view=markup&rev=1.1 Index: php-src/ext/standard/tests/strings/bug39032.phpt +++ php-src/ext/standard/tests/strings/bug39032.phpt --TEST-- Bug #39032 (strcspn() stops on null character) --FILE-- <?php var_dump(strcspn(chr(0),"x")); var_dump(strcspn(chr(0),"")); var_dump(strcspn(chr(0),"qweqwe")); var_dump(strcspn(chr(1),"qweqwe")); echo "Done\n"; ?> --EXPECTF-- int(1) int(0) int(1) int(1) Done -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php