ID: 28525 User updated by: pickett at sumu dot org Reported By: pickett at sumu dot org Status: Open Bug Type: *Math Functions PHP Version: 4.3.7RC1 New Comment:
Here's a fix --- php-4.3.7RC1/ext/gmp/gmp.c 2004-02-16 17:13:49.000000000 +0200 +++ php-4.3.7RC1/ext/gmp/gmp.c 2004-05-28 12:56:59.000000000 +0300 @@ -830,8 +830,7 @@ } FETCH_GMP_ZVAL(gmpnum_mod, mod_arg); - convert_to_long_ex(mod_arg); - if (!Z_LVAL_PP(mod_arg)) { + if(mpz_cmp_ui(*gmpnum_mod, 0) == 0) { RETURN_FALSE; } Previous Comments: ------------------------------------------------------------------------ [2004-05-26 19:39:50] pickett at sumu dot org I used "0x1" here for brevity. In real world I use gmp_powm() for diffie-hellman key exchange with vastly larger numbers that can't be represented as normal integers in php. ------------------------------------------------------------------------ [2004-05-26 19:24:09] [EMAIL PROTECTED] Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.php.net/manual/ and the instructions on how to report a bug at http://bugs.php.net/how-to-report.php Do not pass hex numbers as strings. var_dump(gmp_powm(0x1, 0x1, 0x1)); works fine. ------------------------------------------------------------------------ [2004-05-26 11:08:10] pickett at sumu dot org Description: ------------ Fix for bug #27172 broke hexadecimal string modulos for gmp_powm(). Reproduce code: --------------- var_dump(gmp_powm("0x1", "0x1", "0x1")) Expected result: ---------------- resource(4) of type (GMP integer) Actual result: -------------- bool(false) ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=28525&edit=1