@@ -1389,10 +1389,13 @@ ZEND_API zend_result ZEND_FASTCALL pow_function(zval *result, zval *op1, zval *o
1389
1389
}
1390
1390
/* }}} */
1391
1391
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 ) /* {{{ */
1396
1399
{
1397
1400
uint8_t type_pair = TYPE_PAIR (Z_TYPE_P (op1 ), Z_TYPE_P (op2 ));
1398
1401
@@ -1402,34 +1405,34 @@ static int ZEND_FASTCALL div_function_base(zval *result, zval *op1, zval *op2) /
1402
1405
} else if (Z_LVAL_P (op2 ) == -1 && Z_LVAL_P (op1 ) == ZEND_LONG_MIN ) {
1403
1406
/* Prevent overflow error/crash */
1404
1407
ZVAL_DOUBLE (result , (double ) ZEND_LONG_MIN / -1 );
1405
- return SUCCESS ;
1408
+ return DIV_SUCCESS ;
1406
1409
}
1407
1410
if (Z_LVAL_P (op1 ) % Z_LVAL_P (op2 ) == 0 ) { /* integer */
1408
1411
ZVAL_LONG (result , Z_LVAL_P (op1 ) / Z_LVAL_P (op2 ));
1409
1412
} else {
1410
1413
ZVAL_DOUBLE (result , ((double ) Z_LVAL_P (op1 )) / Z_LVAL_P (op2 ));
1411
1414
}
1412
- return SUCCESS ;
1415
+ return DIV_SUCCESS ;
1413
1416
} else if (EXPECTED (type_pair == TYPE_PAIR (IS_DOUBLE , IS_DOUBLE ))) {
1414
1417
if (Z_DVAL_P (op2 ) == 0 ) {
1415
1418
return DIV_BY_ZERO ;
1416
1419
}
1417
1420
ZVAL_DOUBLE (result , Z_DVAL_P (op1 ) / Z_DVAL_P (op2 ));
1418
- return SUCCESS ;
1421
+ return DIV_SUCCESS ;
1419
1422
} else if (EXPECTED (type_pair == TYPE_PAIR (IS_DOUBLE , IS_LONG ))) {
1420
1423
if (Z_LVAL_P (op2 ) == 0 ) {
1421
1424
return DIV_BY_ZERO ;
1422
1425
}
1423
1426
ZVAL_DOUBLE (result , Z_DVAL_P (op1 ) / (double )Z_LVAL_P (op2 ));
1424
- return SUCCESS ;
1427
+ return DIV_SUCCESS ;
1425
1428
} else if (EXPECTED (type_pair == TYPE_PAIR (IS_LONG , IS_DOUBLE ))) {
1426
1429
if (Z_DVAL_P (op2 ) == 0 ) {
1427
1430
return DIV_BY_ZERO ;
1428
1431
}
1429
1432
ZVAL_DOUBLE (result , (double )Z_LVAL_P (op1 ) / Z_DVAL_P (op2 ));
1430
- return SUCCESS ;
1433
+ return DIV_SUCCESS ;
1431
1434
} else {
1432
- return TYPES_NOT_HANDLED ;
1435
+ return DIV_TYPES_NOT_HANDLED ;
1433
1436
}
1434
1437
}
1435
1438
/* }}} */
@@ -1439,8 +1442,8 @@ ZEND_API zend_result ZEND_FASTCALL div_function(zval *result, zval *op1, zval *o
1439
1442
ZVAL_DEREF (op1 );
1440
1443
ZVAL_DEREF (op2 );
1441
1444
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 )) {
1444
1447
return SUCCESS ;
1445
1448
}
1446
1449
@@ -1461,7 +1464,7 @@ ZEND_API zend_result ZEND_FASTCALL div_function(zval *result, zval *op1, zval *o
1461
1464
}
1462
1465
1463
1466
retval = div_function_base (& result_copy , & op1_copy , & op2_copy );
1464
- if (retval == SUCCESS ) {
1467
+ if (retval == DIV_SUCCESS ) {
1465
1468
if (result == op1 ) {
1466
1469
zval_ptr_dtor (result );
1467
1470
}
@@ -1470,7 +1473,7 @@ ZEND_API zend_result ZEND_FASTCALL div_function(zval *result, zval *op1, zval *o
1470
1473
}
1471
1474
1472
1475
div_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" );
1474
1477
if (result != op1 ) {
1475
1478
ZVAL_UNDEF (result );
1476
1479
}
0 commit comments