@@ -658,36 +658,44 @@ ZEND_API zend_opt_long ZEND_FASTCALL zend_flf_parse_arg_long_slow(const zval *ar
658
658
659
659
ZEND_API zend_opt_double ZEND_FASTCALL zend_parse_arg_double_weak (const zval * arg , uint32_t arg_num ) /* {{{ */
660
660
{
661
- zend_opt_double result ;
662
- result .has_value = false;
663
661
if (EXPECTED (Z_TYPE_P (arg ) == IS_LONG )) {
664
- result . value = ( double )Z_LVAL_P (arg );
662
+ return ( zend_opt_double ){( double )Z_LVAL_P (arg ), true} ;
665
663
} else if (EXPECTED (Z_TYPE_P (arg ) == IS_STRING )) {
666
664
zend_long l ;
667
665
uint8_t type ;
666
+ double d ;
668
667
669
- if (UNEXPECTED ((type = is_numeric_str_function (Z_STR_P (arg ), & l , & result .value )) != IS_DOUBLE )) {
668
+ if (UNEXPECTED ((type = is_numeric_str_function (Z_STR_P (arg ), & l , & d )) != IS_DOUBLE )) {
669
+ zend_opt_double result ;
670
670
if (EXPECTED (type != 0 )) {
671
671
result .value = (double )(l );
672
672
result .has_value = true;
673
+ } else {
674
+ result .has_value = false;
673
675
}
674
676
return result ;
677
+ } else {
678
+ return (zend_opt_double ){d , true};
675
679
}
676
680
if (UNEXPECTED (EG (exception ))) {
681
+ zend_opt_double result ;
682
+ result .has_value = false;
677
683
return result ;
678
684
}
679
685
} else if (EXPECTED (Z_TYPE_P (arg ) < IS_TRUE )) {
680
686
if (UNEXPECTED (Z_TYPE_P (arg ) == IS_NULL ) && !zend_null_arg_deprecated ("float" , arg_num )) {
687
+ zend_opt_double result ;
688
+ result .has_value = false;
681
689
return result ;
682
690
}
683
- result . value = 0.0 ;
691
+ return ( zend_opt_double ){ 0.0 , true} ;
684
692
} else if (EXPECTED (Z_TYPE_P (arg ) == IS_TRUE )) {
685
- result . value = 1.0 ;
693
+ return ( zend_opt_double ){ 1.0 , true} ;
686
694
} else {
695
+ zend_opt_double result ;
696
+ result .has_value = false;
687
697
return result ;
688
698
}
689
- result .has_value = true;
690
- return result ;
691
699
}
692
700
/* }}} */
693
701
0 commit comments