From 92ebb2e282e43697055a50c8de9bc21f57793880 Mon Sep 17 00:00:00 2001 From: Ilia Alshanetsky Date: Wed, 30 Jan 2008 18:25:51 +0000 Subject: [PATCH] Fixed bug #43981 (gmp_div_r() does not preserve the sign of 1st argument) --- ext/gmp/gmp.c | 3 +++ 1 file changed, 3 insertions(+) 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)); } -- 2.40.0