Skip to content

Commit 9bb638a

Browse files
committed
Add switch error handling to other strpos variants
1 parent 7ccecfe commit 9bb638a

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

ext/mbstring/mbstring.c

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2117,6 +2117,7 @@ PHP_FUNCTION(mb_strpos)
21172117
} else {
21182118
switch (-n) {
21192119
case 1:
2120+
/* Returns false */
21202121
break;
21212122
case 2:
21222123
zend_value_error("Needle has not positive length");
@@ -2167,6 +2168,23 @@ PHP_FUNCTION(mb_strrpos)
21672168
if (!mbfl_is_error(n)) {
21682169
RETVAL_LONG(n);
21692170
} else {
2171+
switch (-n) {
2172+
case 1:
2173+
/* Returns false */
2174+
break;
2175+
case 2:
2176+
zend_value_error("Needle has not positive length");
2177+
RETURN_THROWS();
2178+
case 4:
2179+
zend_value_error("Unknown encoding or conversion error");
2180+
RETURN_THROWS();
2181+
case 8:
2182+
zend_value_error("Argument is empty");
2183+
RETURN_THROWS();
2184+
default:
2185+
zend_value_error("Unknown error in mb_strrpos");
2186+
RETURN_THROWS();
2187+
}
21702188
RETVAL_FALSE;
21712189
}
21722190
}
@@ -2190,6 +2208,23 @@ PHP_FUNCTION(mb_stripos)
21902208
if (!mbfl_is_error(n)) {
21912209
RETVAL_LONG(n);
21922210
} else {
2211+
switch (-n) {
2212+
case 1:
2213+
/* Returns false */
2214+
break;
2215+
case 2:
2216+
zend_value_error("Needle has not positive length");
2217+
RETURN_THROWS();
2218+
case 4:
2219+
zend_value_error("Unknown encoding or conversion error");
2220+
RETURN_THROWS();
2221+
case 8:
2222+
zend_value_error("Argument is empty");
2223+
RETURN_THROWS();
2224+
default:
2225+
zend_value_error("Unknown error in mb_stripos");
2226+
RETURN_THROWS();
2227+
}
21932228
RETVAL_FALSE;
21942229
}
21952230
}
@@ -2213,6 +2248,23 @@ PHP_FUNCTION(mb_strripos)
22132248
if (!mbfl_is_error(n)) {
22142249
RETVAL_LONG(n);
22152250
} else {
2251+
switch (-n) {
2252+
case 1:
2253+
/* Returns false */
2254+
break;
2255+
case 2:
2256+
zend_value_error("Needle has not positive length");
2257+
RETURN_THROWS();
2258+
case 4:
2259+
zend_value_error("Unknown encoding or conversion error");
2260+
RETURN_THROWS();
2261+
case 8:
2262+
zend_value_error("Argument is empty");
2263+
RETURN_THROWS();
2264+
default:
2265+
zend_value_error("Unknown error in mb_strripos");
2266+
RETURN_THROWS();
2267+
}
22162268
RETVAL_FALSE;
22172269
}
22182270
}

0 commit comments

Comments
 (0)