@@ -2178,14 +2178,14 @@ ZEND_API bool ZEND_FASTCALL zend_parse_arg_long_slow(const zval *arg, zend_long
21782178ZEND_API bool ZEND_FASTCALL zend_parse_arg_long_weak (const zval * arg , zend_long * dest , uint32_t arg_num );
21792179ZEND_API bool ZEND_FASTCALL zend_parse_arg_double_slow (const zval * arg , double * dest , uint32_t arg_num );
21802180ZEND_API bool ZEND_FASTCALL zend_parse_arg_double_weak (const zval * arg , double * dest , uint32_t arg_num );
2181- ZEND_API bool ZEND_FASTCALL zend_parse_arg_str_slow (zval * arg , zend_string * * dest , uint32_t arg_num );
2182- ZEND_API bool ZEND_FASTCALL zend_parse_arg_str_weak (zval * arg , zend_string * * dest , uint32_t arg_num );
2181+ ZEND_API zend_string * ZEND_FASTCALL zend_parse_arg_str_slow (zval * arg , uint32_t arg_num );
2182+ ZEND_API zend_string * ZEND_FASTCALL zend_parse_arg_str_weak (zval * arg , uint32_t arg_num );
21832183ZEND_API bool ZEND_FASTCALL zend_parse_arg_number_slow (zval * arg , zval * * dest , uint32_t arg_num );
21842184ZEND_API bool ZEND_FASTCALL zend_parse_arg_number_or_str_slow (zval * arg , zval * * dest , uint32_t arg_num );
21852185ZEND_API bool ZEND_FASTCALL zend_parse_arg_str_or_long_slow (zval * arg , zend_string * * dest_str , zend_long * dest_long , uint32_t arg_num );
21862186
21872187ZEND_API bool ZEND_FASTCALL zend_flf_parse_arg_bool_slow (const zval * arg , bool * dest , uint32_t arg_num );
2188- ZEND_API bool ZEND_FASTCALL zend_flf_parse_arg_str_slow (zval * arg , zend_string * * dest , uint32_t arg_num );
2188+ ZEND_API zend_string * ZEND_FASTCALL zend_flf_parse_arg_str_slow (zval * arg , uint32_t arg_num );
21892189ZEND_API bool ZEND_FASTCALL zend_flf_parse_arg_long_slow (const zval * arg , zend_long * dest , uint32_t arg_num );
21902190
21912191static zend_always_inline bool zend_parse_arg_bool_ex (const zval * arg , bool * dest , bool * is_null , bool check_null , uint32_t arg_num , bool frameless )
@@ -2287,10 +2287,16 @@ static zend_always_inline bool zend_parse_arg_str_ex(zval *arg, zend_string **de
22872287 } else if (check_null && Z_TYPE_P (arg ) == IS_NULL ) {
22882288 * dest = NULL ;
22892289 } else {
2290+ zend_string * str ;
22902291 if (frameless ) {
2291- return zend_flf_parse_arg_str_slow (arg , dest , arg_num );
2292+ str = zend_flf_parse_arg_str_slow (arg , arg_num );
22922293 } else {
2293- return zend_parse_arg_str_slow (arg , dest , arg_num );
2294+ str = zend_parse_arg_str_slow (arg , arg_num );
2295+ }
2296+ if (str ) {
2297+ * dest = str ;
2298+ } else {
2299+ return 0 ;
22942300 }
22952301 }
22962302 return 1 ;
@@ -2524,7 +2530,8 @@ static zend_always_inline bool zend_parse_arg_array_ht_or_str(
25242530 * dest_str = NULL ;
25252531 } else {
25262532 * dest_ht = NULL ;
2527- return zend_parse_arg_str_slow (arg , dest_str , arg_num );
2533+ * dest_str = zend_parse_arg_str_slow (arg , arg_num );
2534+ return * dest_str != NULL ;
25282535 }
25292536 return 1 ;
25302537}
0 commit comments