pollita Sat Apr 12 16:04:06 2003 EDT
Added files:
/php4/ext/standard/tests/strings strripos.phpt strrpos.phpt
Modified files:
/php4/ext/standard string.c
Log:
Add tests for strrpos/stripos, and minor fix to maintain BC for condition with empty
needles/haystacks
Index: php4/ext/standard/string.c
diff -u php4/ext/standard/string.c:1.371 php4/ext/standard/string.c:1.372
--- php4/ext/standard/string.c:1.371 Sat Apr 12 03:36:22 2003
+++ php4/ext/standard/string.c Sat Apr 12 16:04:06 2003
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: string.c,v 1.371 2003/04/12 07:36:22 pollita Exp $ */
+/* $Id: string.c,v 1.372 2003/04/12 20:04:06 pollita Exp $ */
/* Synced with php 3.0 revision 1.193 1999-06-16 [ssb] */
@@ -1579,6 +1579,10 @@
RETURN_FALSE;
}
+ if ((haystack_len == 0) || (needle_len == 0)) {
+ RETURN_FALSE;
+ }
+
if (offset >= 0) {
p = haystack + offset;
e = haystack + haystack_len - needle_len;
@@ -1612,6 +1616,10 @@
char *needle_dup, *haystack_dup;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|l", &haystack,
&haystack_len, &needle, &needle_len, &offset) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+ if ((haystack_len == 0) || (needle_len == 0)) {
RETURN_FALSE;
}
Index: php4/ext/standard/tests/strings/strripos.phpt
+++ php4/ext/standard/tests/strings/strripos.phpt
--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)
Index: php4/ext/standard/tests/strings/strrpos.phpt
+++ php4/ext/standard/tests/strings/strrpos.phpt
--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)
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php