com php-src: fix datatypes for gmp to be compatible with GMP/MPIR on different platforms: ext/gmp/gmp.c ext/gmp/php_gmp.h

From: Date: Tue, 02 Sep 2014 16:19:51 +0000
Subject: com php-src: fix datatypes for gmp to be compatible with GMP/MPIR on different platforms: ext/gmp/gmp.c ext/gmp/php_gmp.h
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-81372@lists.php.net to get a copy of this message
Commit: 08b732f26bfe0330d873d622386ea5624ceaab36 Author: Anatol Belski <ab@php.net> Tue, 2 Sep 2014 18:19:51 +0200 Parents: e7386aa1fd6291158291c9b041e7d7f531d7f347 Branches: master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=08b732f26bfe0330d873d622386ea5624ceaab36 Log: fix datatypes for gmp to be compatible with GMP/MPIR on different platforms Changed paths: M ext/gmp/gmp.c M ext/gmp/php_gmp.h Diff: diff --git a/ext/gmp/gmp.c b/ext/gmp/gmp.c index 19c7f28..1dfaa33 100644 --- a/ext/gmp/gmp.c +++ b/ext/gmp/gmp.c @@ -331,14 +331,14 @@ static void gmp_cmp(zval *return_value, zval *a_arg, zval *b_arg TSRMLS_DC); typedef void (*gmp_unary_op_t)(mpz_ptr, mpz_srcptr); typedef int (*gmp_unary_opl_t)(mpz_srcptr); -typedef void (*gmp_unary_ui_op_t)(mpz_ptr, unsigned long); +typedef void (*gmp_unary_ui_op_t)(mpz_ptr, gmp_ulong); typedef void (*gmp_binary_op_t)(mpz_ptr, mpz_srcptr, mpz_srcptr); typedef int (*gmp_binary_opl_t)(mpz_srcptr, mpz_srcptr); -typedef void (*gmp_binary_ui_op_t)(mpz_ptr, mpz_srcptr, unsigned long); +typedef void (*gmp_binary_ui_op_t)(mpz_ptr, mpz_srcptr, gmp_ulong); typedef void (*gmp_binary_op2_t)(mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr); -typedef void (*gmp_binary_ui_op2_t)(mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long); +typedef void (*gmp_binary_ui_op2_t)(mpz_ptr, mpz_ptr, mpz_srcptr, gmp_ulong); static inline void gmp_zval_binary_ui_op(zval *return_value, zval *a_arg, zval *b_arg, gmp_binary_op_t gmp_op, gmp_binary_ui_op_t gmp_ui_op, int check_b_zero TSRMLS_DC); static inline void gmp_zval_binary_ui_op2(zval *return_value, zval *a_arg, zval *b_arg, gmp_binary_op2_t gmp_op, gmp_binary_ui_op2_t gmp_ui_op, int check_b_zero TSRMLS_DC); @@ -483,7 +483,7 @@ static void shift_operator_helper(gmp_binary_ui_op_t op, zval *return_value, zva FETCH_GMP_ZVAL(gmpnum_op, op1, temp); INIT_GMP_RETVAL(gmpnum_result); - op(gmpnum_result, gmpnum_op, (unsigned long) shift); + op(gmpnum_result, gmpnum_op, (gmp_ulong) shift); FREE_GMP_TEMP(temp); } } @@ -862,7 +862,7 @@ static inline void gmp_zval_binary_ui_op(zval *return_value, zval *a_arg, zval * INIT_GMP_RETVAL(gmpnum_result); if (use_ui) { - gmp_ui_op(gmpnum_result, gmpnum_a, (unsigned long) Z_LVAL_P(b_arg)); + gmp_ui_op(gmpnum_result, gmpnum_a, (gmp_ulong) Z_LVAL_P(b_arg)); } else { gmp_op(gmpnum_result, gmpnum_a, gmpnum_b); } @@ -916,7 +916,7 @@ static inline void gmp_zval_binary_ui_op2(zval *return_value, zval *a_arg, zval add_next_index_zval(return_value, &result2); if (use_ui) { - gmp_ui_op(gmpnum_result1, gmpnum_result2, gmpnum_a, (unsigned long) Z_LVAL_P(b_arg)); + gmp_ui_op(gmpnum_result1, gmpnum_result2, gmpnum_a, (gmp_ulong) Z_LVAL_P(b_arg)); } else { gmp_op(gmpnum_result1, gmpnum_result2, gmpnum_a, gmpnum_b); } @@ -1560,7 +1560,7 @@ ZEND_FUNCTION(gmp_root) } INIT_GMP_RETVAL(gmpnum_result); - mpz_root(gmpnum_result, gmpnum_a, (unsigned long) nth); + mpz_root(gmpnum_result, gmpnum_a, (gmp_ulong) nth); FREE_GMP_TEMP(temp_a); } /* }}} */ @@ -1600,10 +1600,10 @@ ZEND_FUNCTION(gmp_rootrem) add_next_index_zval(return_value, &result2); #if GMP_42_OR_NEWER - mpz_rootrem(gmpnum_result1, gmpnum_result2, gmpnum_a, (unsigned long) nth); + mpz_rootrem(gmpnum_result1, gmpnum_result2, gmpnum_a, (gmp_ulong) nth); #else - mpz_root(gmpnum_result1, gmpnum_a, (unsigned long) nth); - mpz_pow_ui(gmpnum_result2, gmpnum_result1, (unsigned long) nth); + mpz_root(gmpnum_result1, gmpnum_a, (gmp_ulong) nth); + mpz_pow_ui(gmpnum_result2, gmpnum_result1, (gmp_ulong) nth); mpz_sub(gmpnum_result2, gmpnum_a, gmpnum_result2); mpz_abs(gmpnum_result2, gmpnum_result2); #endif diff --git a/ext/gmp/php_gmp.h b/ext/gmp/php_gmp.h index b3706c5..bce2a9e 100644 --- a/ext/gmp/php_gmp.h +++ b/ext/gmp/php_gmp.h @@ -75,6 +75,15 @@ ZEND_FUNCTION(gmp_popcount); ZEND_FUNCTION(gmp_hamdist); ZEND_FUNCTION(gmp_nextprime); +/* GMP and MPIR use different datatypes on different platforms */ +#ifdef PHP_WIN32 +typedef zend_long gmp_long; +typedef zend_ulong gmp_ulong; +#else +typedef long gmp_long; +typedef unsigned long gmp_ulong; +#endif + ZEND_BEGIN_MODULE_GLOBALS(gmp) zend_bool rand_initialized; gmp_randstate_t rand_state;

« previous php.cvs (#81372) next »