1
0
mirror of https://github.com/php/php-src.git synced 2026-03-27 09:42:22 +01:00

don't try to compare strings if haystack is "" or shorter than needle

add test
This commit is contained in:
Antony Dovgal
2006-07-12 12:33:04 +00:00
parent 3945c5e1c6
commit 9de18e2ca2
2 changed files with 61 additions and 1 deletions

View File

@@ -2429,8 +2429,13 @@ PHP_FUNCTION(stripos)
}
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)) {

View File

@@ -0,0 +1,55 @@
--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