summaryrefslogtreecommitdiff
path: root/ext/standard
diff options
context:
space:
mode:
authorSara Golemon <pollita@php.net>2003-04-12 20:04:06 +0000
committerSara Golemon <pollita@php.net>2003-04-12 20:04:06 +0000
commit76965beb04478defa61d7d32f552247a4c3242e2 (patch)
treea47d3737b0236c84e8b8c7237f24576a19d1516f /ext/standard
parent0b5c1112c502b31ce86094394d9ebb2d04e74ae7 (diff)
downloadphp-git-76965beb04478defa61d7d32f552247a4c3242e2.tar.gz
Add tests for strrpos/stripos, and minor fix to maintain BC for condition with empty needles/haystacks
Diffstat (limited to 'ext/standard')
-rw-r--r--ext/standard/string.c8
-rw-r--r--ext/standard/tests/strings/strripos.phpt35
-rw-r--r--ext/standard/tests/strings/strrpos.phpt34
3 files changed, 77 insertions, 0 deletions
diff --git a/ext/standard/string.c b/ext/standard/string.c
index aba93f5059..c329f9e16a 100644
--- a/ext/standard/string.c
+++ b/ext/standard/string.c
@@ -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
index 0000000000..c9c6eae7e3
--- /dev/null
+++ b/ext/standard/tests/strings/strripos.phpt
@@ -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
index 0000000000..0d4337605a
--- /dev/null
+++ b/ext/standard/tests/strings/strrpos.phpt
@@ -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)