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

index 861ae22be84e7adf0617d60ab106f15b92637707..416613d409abbb6d0821dd32957cb4bbaaed75a9 100644 (file)
@@ -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));
                }