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