]> granicus.if.org Git - php/commitdiff
Add tests for strrpos/stripos, and minor fix to maintain BC for condition with empty...
authorSara Golemon <pollita@php.net>
Sat, 12 Apr 2003 20:04:06 +0000 (20:04 +0000)
committerSara Golemon <pollita@php.net>
Sat, 12 Apr 2003 20:04:06 +0000 (20:04 +0000)
ext/standard/string.c
ext/standard/tests/strings/strripos.phpt [new file with mode: 0644]
ext/standard/tests/strings/strrpos.phpt [new file with mode: 0644]

index aba93f505928439d78d5fc7a6907d22aef7efcb0..c329f9e16a99ceb2127ccfe8e5752a4bfc5a9795 100644 (file)
@@ -1579,6 +1579,10 @@ PHP_FUNCTION(strrpos)
                RETURN_FALSE;
        }
 
+       if ((haystack_len == 0) || (needle_len == 0)) {
+               RETURN_FALSE;
+       }
+
        if (offset >= 0) {
                p = haystack + offset;
                e = haystack + haystack_len - needle_len;
@@ -1615,6 +1619,10 @@ PHP_FUNCTION(strripos)
                RETURN_FALSE;
        }
 
+       if ((haystack_len == 0) || (needle_len == 0)) {
+               RETURN_FALSE;
+       }
+
        needle_dup = estrndup(needle, needle_len);
        php_strtolower(needle_dup, needle_len);
        haystack_dup = estrndup(haystack, haystack_len);
diff --git a/ext/standard/tests/strings/strripos.phpt b/ext/standard/tests/strings/strripos.phpt
new file mode 100644 (file)
index 0000000..c9c6eae
--- /dev/null
@@ -0,0 +1,35 @@
+--TEST--
+strripos() function
+--POST--
+--GET--
+--FILE--
+<?php
+       var_dump(strripos("test test string", "test"));
+       var_dump(strripos("test string sTring", "string"));
+       var_dump(strripos("test strip string strand", "str"));
+       var_dump(strripos("I am what I am and that's all what I am", "am", -3));
+       var_dump(strripos("test string", "g"));
+       var_dump(strripos("te".chr(0)."st", chr(0)));
+       var_dump(strripos("tEst", "test"));
+       var_dump(strripos("teSt", "test"));
+       var_dump(@strripos("foo", "f", 1));
+       var_dump(@strripos("", ""));
+       var_dump(@strripos("a", ""));
+       var_dump(@strripos("", "a"));
+       var_dump(@strripos("\\\\a", "\\a"));
+?>
+--EXPECT--
+int(5)
+int(12)
+int(18)
+int(12)
+int(10)
+int(2)
+int(0)
+int(0)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+int(1)
+
diff --git a/ext/standard/tests/strings/strrpos.phpt b/ext/standard/tests/strings/strrpos.phpt
new file mode 100644 (file)
index 0000000..0d43376
--- /dev/null
@@ -0,0 +1,34 @@
+--TEST--
+strrpos() function
+--POST--
+--GET--
+--FILE--
+<?php
+       var_dump(strrpos("test test string", "test"));
+       var_dump(strrpos("test string sTring", "string"));
+       var_dump(strrpos("test strip string strand", "str"));
+       var_dump(strrpos("I am what I am and that's all what I am", "am", -3));
+       var_dump(strrpos("test string", "g"));
+       var_dump(strrpos("te".chr(0)."st", chr(0)));
+       var_dump(strrpos("tEst", "test"));
+       var_dump(strrpos("teSt", "test"));
+       var_dump(@strrpos("foo", "f", 1));
+       var_dump(@strrpos("", ""));
+       var_dump(@strrpos("a", ""));
+       var_dump(@strrpos("", "a"));
+       var_dump(@strrpos("\\\\a", "\\a"));
+?>
+--EXPECT--
+int(5)
+int(5)
+int(18)
+int(12)
+int(10)
+int(2)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+int(1)