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

Reply via email to