@@ -1414,6 +1414,7 @@ ZEND_FUNCTION(gmp_root)
1414
1414
FETCH_GMP_ZVAL (gmpnum_a , a_arg , temp_a , 1 );
1415
1415
1416
1416
if (nth % 2 == 0 && mpz_sgn (gmpnum_a ) < 0 ) {
1417
+ // Todo promote to ValueError?
1417
1418
php_error_docref (NULL , E_WARNING , "Can't take even root of negative number" );
1418
1419
FREE_GMP_TEMP (temp_a );
1419
1420
RETURN_FALSE ;
@@ -1446,6 +1447,7 @@ ZEND_FUNCTION(gmp_rootrem)
1446
1447
FETCH_GMP_ZVAL (gmpnum_a , a_arg , temp_a , 1 );
1447
1448
1448
1449
if (nth % 2 == 0 && mpz_sgn (gmpnum_a ) < 0 ) {
1450
+ // Todo promote to ValueError?
1449
1451
php_error_docref (NULL , E_WARNING , "Can't take even root of negative number" );
1450
1452
FREE_GMP_TEMP (temp_a );
1451
1453
RETURN_FALSE ;
@@ -1582,6 +1584,7 @@ ZEND_FUNCTION(gmp_invert)
1582
1584
if (zend_parse_parameters (ZEND_NUM_ARGS (), "zz" , & a_arg , & b_arg ) == FAILURE ){
1583
1585
RETURN_THROWS ();
1584
1586
}
1587
+ // TODO Check b_arg is not 0 as behaviour is undefined for op2 = 0 for mpz_invert
1585
1588
1586
1589
FETCH_GMP_ZVAL (gmpnum_a , a_arg , temp_a , 1 );
1587
1590
FETCH_GMP_ZVAL_DEP (gmpnum_b , b_arg , temp_b , temp_a , 2 );
@@ -1591,6 +1594,7 @@ ZEND_FUNCTION(gmp_invert)
1591
1594
FREE_GMP_TEMP (temp_a );
1592
1595
FREE_GMP_TEMP (temp_b );
1593
1596
if (!res ) {
1597
+ // Should return 0 instead of false? A legit 0 value is impossible.
1594
1598
zval_ptr_dtor (return_value );
1595
1599
RETURN_FALSE ;
1596
1600
}
0 commit comments