tony2001                Wed Jul 12 12:33:05 2006 UTC

  Added files:                 
    /php-src/ext/standard/tests/strings stripos.phpt 

  Modified files:              
    /php-src/ext/standard       string.c 
  Log:
  don't try to compare strings if haystack is "" or shorter than needle
  add test
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/string.c?r1=1.547&r2=1.548&diff_format=u
Index: php-src/ext/standard/string.c
diff -u php-src/ext/standard/string.c:1.547 php-src/ext/standard/string.c:1.548
--- php-src/ext/standard/string.c:1.547 Fri Jun 30 09:35:21 2006
+++ php-src/ext/standard/string.c       Wed Jul 12 12:33:04 2006
@@ -18,7 +18,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: string.c,v 1.547 2006/06/30 09:35:21 tony2001 Exp $ */
+/* $Id: string.c,v 1.548 2006/07/12 12:33:04 tony2001 Exp $ */
 
 /* Synced with php 3.0 revision 1.193 1999-06-16 [ssb] */
 
@@ -2429,8 +2429,13 @@
        }
 
        haystack_len = Z_UNILEN_P(haystack);
+
+       if (haystack_len == 0) {
+               RETURN_FALSE;
+       }
+
        if (Z_TYPE_P(needle) == IS_UNICODE || Z_TYPE_P(needle) == IS_STRING) {
-               if (!Z_UNILEN_P(needle)) {
+               if (!Z_UNILEN_P(needle) || Z_UNILEN_P(needle) > haystack_len) {
                        RETURN_FALSE;
                }
                if (Z_TYPE_P(haystack) != Z_TYPE_P(needle)) {

http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/strings/stripos.phpt?view=markup&rev=1.1
Index: php-src/ext/standard/tests/strings/stripos.phpt
+++ php-src/ext/standard/tests/strings/stripos.phpt
--TEST--
stripos() function test
--FILE--
<?php
        var_dump(stripos("test string", "TEST"));
        var_dump(stripos("test string", "strIng"));
        var_dump(stripos("test string", "stRin"));
        var_dump(stripos("test string", "t S"));
        var_dump(stripos("test string", "G"));
        var_dump(stripos("te".chr(0)."st", chr(0)));
        var_dump(stripos("tEst", "test"));
        var_dump(stripos("teSt", "test"));
        var_dump(stripos("", ""));
        var_dump(stripos("a", ""));
        var_dump(stripos("", "a"));
        var_dump(stripos("a", " "));
        var_dump(stripos("a", "a"));
        var_dump(stripos("", 1));
        var_dump(stripos("", false));
        var_dump(stripos("", true));
        var_dump(stripos("a", 1));
        var_dump(stripos("a", false));
        var_dump(stripos("a", true));
        var_dump(stripos("1", 1));
        var_dump(stripos("0", false));
        var_dump(stripos("1", true));
        var_dump(stripos("\\\\a", "\\a"));

        echo "Done\n";
?>
--EXPECT--
int(0)
int(5)
int(5)
int(3)
int(10)
int(2)
int(0)
int(0)
bool(false)
bool(false)
bool(false)
bool(false)
int(0)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
int(1)
Done

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to