]> granicus.if.org Git - php/commitdiff
MFB: Fixed bug #43981 (gmp_div_r() does not preserve the sign of 1st argument)
authorIlia Alshanetsky <iliaa@php.net>
Wed, 30 Jan 2008 18:26:08 +0000 (18:26 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Wed, 30 Jan 2008 18:26:08 +0000 (18:26 +0000)
ext/gmp/gmp.c

index 6445a3e25d8f4a1372f4c3c623a8bc2090da635c..bbb4b7bb48253446fadfb7e0b6dc6a4888f87884 100644 (file)
@@ -577,6 +577,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));
                }