From: Ilia Alshanetsky Date: Wed, 30 Jan 2008 18:25:51 +0000 (+0000) Subject: Fixed bug #43981 (gmp_div_r() does not preserve the sign of 1st argument) X-Git-Tag: RELEASE_1_3_1~212 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=92ebb2e282e43697055a50c8de9bc21f57793880;p=php Fixed bug #43981 (gmp_div_r() does not preserve the sign of 1st argument) --- diff --git a/ext/gmp/gmp.c b/ext/gmp/gmp.c index 861ae22be8..416613d409 100644 --- a/ext/gmp/gmp.c +++ b/ext/gmp/gmp.c @@ -569,6 +569,9 @@ static inline void gmp_zval_binary_ui_op_ex(zval *return_value, zval **a_arg, zv if (use_ui && gmp_ui_op) { if (allow_ui_return) { long_result = gmp_ui_op(*gmpnum_result, *gmpnum_a, (unsigned long)Z_LVAL_PP(b_arg)); + if (mpz_sgn(*gmpnum_a) == -1) { + long_result = -long_result; + } } else { gmp_ui_op(*gmpnum_result, *gmpnum_a, (unsigned long)Z_LVAL_PP(b_arg)); }