@@ -1389,10 +1389,13 @@ ZEND_API zend_result ZEND_FASTCALL pow_function(zval *result, zval *op1, zval *o
13891389}
13901390/* }}} */
13911391
1392- /* Returns SUCCESS/TYPES_NOT_HANDLED/DIV_BY_ZERO */
1393- #define TYPES_NOT_HANDLED 1
1394- #define DIV_BY_ZERO 2
1395- static int ZEND_FASTCALL div_function_base (zval * result , zval * op1 , zval * op2 ) /* {{{ */
1392+ typedef enum {
1393+ DIV_SUCCESS ,
1394+ DIV_BY_ZERO ,
1395+ DIV_TYPES_NOT_HANDLED
1396+ } zend_div_status ;
1397+
1398+ static zend_div_status ZEND_FASTCALL div_function_base (zval * result , const zval * op1 , const zval * op2 ) /* {{{ */
13961399{
13971400 uint8_t type_pair = TYPE_PAIR (Z_TYPE_P (op1 ), Z_TYPE_P (op2 ));
13981401
@@ -1402,34 +1405,34 @@ static int ZEND_FASTCALL div_function_base(zval *result, zval *op1, zval *op2) /
14021405 } else if (Z_LVAL_P (op2 ) == -1 && Z_LVAL_P (op1 ) == ZEND_LONG_MIN ) {
14031406 /* Prevent overflow error/crash */
14041407 ZVAL_DOUBLE (result , (double ) ZEND_LONG_MIN / -1 );
1405- return SUCCESS ;
1408+ return DIV_SUCCESS ;
14061409 }
14071410 if (Z_LVAL_P (op1 ) % Z_LVAL_P (op2 ) == 0 ) { /* integer */
14081411 ZVAL_LONG (result , Z_LVAL_P (op1 ) / Z_LVAL_P (op2 ));
14091412 } else {
14101413 ZVAL_DOUBLE (result , ((double ) Z_LVAL_P (op1 )) / Z_LVAL_P (op2 ));
14111414 }
1412- return SUCCESS ;
1415+ return DIV_SUCCESS ;
14131416 } else if (EXPECTED (type_pair == TYPE_PAIR (IS_DOUBLE , IS_DOUBLE ))) {
14141417 if (Z_DVAL_P (op2 ) == 0 ) {
14151418 return DIV_BY_ZERO ;
14161419 }
14171420 ZVAL_DOUBLE (result , Z_DVAL_P (op1 ) / Z_DVAL_P (op2 ));
1418- return SUCCESS ;
1421+ return DIV_SUCCESS ;
14191422 } else if (EXPECTED (type_pair == TYPE_PAIR (IS_DOUBLE , IS_LONG ))) {
14201423 if (Z_LVAL_P (op2 ) == 0 ) {
14211424 return DIV_BY_ZERO ;
14221425 }
14231426 ZVAL_DOUBLE (result , Z_DVAL_P (op1 ) / (double )Z_LVAL_P (op2 ));
1424- return SUCCESS ;
1427+ return DIV_SUCCESS ;
14251428 } else if (EXPECTED (type_pair == TYPE_PAIR (IS_LONG , IS_DOUBLE ))) {
14261429 if (Z_DVAL_P (op2 ) == 0 ) {
14271430 return DIV_BY_ZERO ;
14281431 }
14291432 ZVAL_DOUBLE (result , (double )Z_LVAL_P (op1 ) / Z_DVAL_P (op2 ));
1430- return SUCCESS ;
1433+ return DIV_SUCCESS ;
14311434 } else {
1432- return TYPES_NOT_HANDLED ;
1435+ return DIV_TYPES_NOT_HANDLED ;
14331436 }
14341437}
14351438/* }}} */
@@ -1439,8 +1442,8 @@ ZEND_API zend_result ZEND_FASTCALL div_function(zval *result, zval *op1, zval *o
14391442 ZVAL_DEREF (op1 );
14401443 ZVAL_DEREF (op2 );
14411444
1442- int retval = div_function_base (result , op1 , op2 );
1443- if (EXPECTED (retval == SUCCESS )) {
1445+ zend_div_status retval = div_function_base (result , op1 , op2 );
1446+ if (EXPECTED (retval == DIV_SUCCESS )) {
14441447 return SUCCESS ;
14451448 }
14461449
@@ -1461,7 +1464,7 @@ ZEND_API zend_result ZEND_FASTCALL div_function(zval *result, zval *op1, zval *o
14611464 }
14621465
14631466 retval = div_function_base (& result_copy , & op1_copy , & op2_copy );
1464- if (retval == SUCCESS ) {
1467+ if (retval == DIV_SUCCESS ) {
14651468 if (result == op1 ) {
14661469 zval_ptr_dtor (result );
14671470 }
@@ -1470,7 +1473,7 @@ ZEND_API zend_result ZEND_FASTCALL div_function(zval *result, zval *op1, zval *o
14701473 }
14711474
14721475div_by_zero :
1473- ZEND_ASSERT (retval == DIV_BY_ZERO && "TYPES_NOT_HANDLED should not occur here" );
1476+ ZEND_ASSERT (retval == DIV_BY_ZERO && "DIV_TYPES_NOT_HANDLED should not occur here" );
14741477 if (result != op1 ) {
14751478 ZVAL_UNDEF (result );
14761479 }
0 commit comments