Skip to content

Commit 87bc4d4

Browse files
committed
Add switch error handling to other strpos variants
1 parent 43cf06f commit 87bc4d4

File tree

1 file changed

+78
-14
lines changed

1 file changed

+78
-14
lines changed

ext/mbstring/mbstring.c

Lines changed: 78 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2116,20 +2116,24 @@ PHP_FUNCTION(mb_strpos)
21162116
RETVAL_LONG(n);
21172117
} else {
21182118
switch (-n) {
2119-
case 1:
2120-
break;
2121-
case 2:
2122-
zend_value_error("Needle has not positive length");
2123-
RETURN_THROWS();
2124-
case 4:
2125-
zend_value_error("Unknown encoding or conversion error");
2126-
RETURN_THROWS();
2127-
case 8:
2128-
zend_value_error("Argument is empty");
2129-
RETURN_THROWS();
2130-
default:
2131-
zend_value_error("Unknown error in mb_strpos");
2132-
RETURN_THROWS();
2119+
case 1:
2120+
/* Returns false */
2121+
break;
2122+
case 2:
2123+
zend_value_error("Needle has not positive length");
2124+
RETURN_THROWS();
2125+
case 4:
2126+
zend_value_error("Unknown encoding or conversion error");
2127+
RETURN_THROWS();
2128+
case 8:
2129+
zend_value_error("Argument is empty");
2130+
RETURN_THROWS();
2131+
case 16:
2132+
zend_value_error("Offset not contained in string");
2133+
RETURN_THROWS();
2134+
default:
2135+
zend_value_error("Unknown error in mb_strripos");
2136+
RETURN_THROWS();
21332137
}
21342138
RETVAL_FALSE;
21352139
}
@@ -2167,6 +2171,26 @@ PHP_FUNCTION(mb_strrpos)
21672171
if (!mbfl_is_error(n)) {
21682172
RETVAL_LONG(n);
21692173
} else {
2174+
switch (-n) {
2175+
case 1:
2176+
/* Returns false */
2177+
break;
2178+
case 2:
2179+
zend_value_error("Needle has not positive length");
2180+
RETURN_THROWS();
2181+
case 4:
2182+
zend_value_error("Unknown encoding or conversion error");
2183+
RETURN_THROWS();
2184+
case 8:
2185+
zend_value_error("Argument is empty");
2186+
RETURN_THROWS();
2187+
case 16:
2188+
zend_value_error("Offset not contained in string");
2189+
RETURN_THROWS();
2190+
default:
2191+
zend_value_error("Unknown error in mb_strripos");
2192+
RETURN_THROWS();
2193+
}
21702194
RETVAL_FALSE;
21712195
}
21722196
}
@@ -2190,6 +2214,26 @@ PHP_FUNCTION(mb_stripos)
21902214
if (!mbfl_is_error(n)) {
21912215
RETVAL_LONG(n);
21922216
} else {
2217+
switch (-n) {
2218+
case 1:
2219+
/* Returns false */
2220+
break;
2221+
case 2:
2222+
zend_value_error("Needle has not positive length");
2223+
RETURN_THROWS();
2224+
case 4:
2225+
zend_value_error("Unknown encoding or conversion error");
2226+
RETURN_THROWS();
2227+
case 8:
2228+
zend_value_error("Argument is empty");
2229+
RETURN_THROWS();
2230+
case 16:
2231+
zend_value_error("Offset not contained in string");
2232+
RETURN_THROWS();
2233+
default:
2234+
zend_value_error("Unknown error in mb_strripos");
2235+
RETURN_THROWS();
2236+
}
21932237
RETVAL_FALSE;
21942238
}
21952239
}
@@ -2213,6 +2257,26 @@ PHP_FUNCTION(mb_strripos)
22132257
if (!mbfl_is_error(n)) {
22142258
RETVAL_LONG(n);
22152259
} else {
2260+
switch (-n) {
2261+
case 1:
2262+
/* Returns false */
2263+
break;
2264+
case 2:
2265+
zend_value_error("Needle has not positive length");
2266+
RETURN_THROWS();
2267+
case 4:
2268+
zend_value_error("Unknown encoding or conversion error");
2269+
RETURN_THROWS();
2270+
case 8:
2271+
zend_value_error("Argument is empty");
2272+
RETURN_THROWS();
2273+
case 16:
2274+
zend_value_error("Offset not contained in string");
2275+
RETURN_THROWS();
2276+
default:
2277+
zend_value_error("Unknown error in mb_strripos");
2278+
RETURN_THROWS();
2279+
}
22162280
RETVAL_FALSE;
22172281
}
22182282
}

0 commit comments

Comments
 (0)