diff options
Diffstat (limited to 'ext/gmp/gmp.c')
| -rw-r--r-- | ext/gmp/gmp.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/ext/gmp/gmp.c b/ext/gmp/gmp.c index 406862ebaa..075f67499f 100644 --- a/ext/gmp/gmp.c +++ b/ext/gmp/gmp.c @@ -817,12 +817,12 @@ ZEND_FUNCTION(gmp_strval) break; } - if (base < 2 || base > 36) { + if ((base < 2 && base > -2) || base > 36 || base < -36) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Bad base for conversion: %d", base); RETURN_FALSE; } - num_len = mpz_sizeinbase(*gmpnum, base); + num_len = mpz_sizeinbase(*gmpnum, abs(base)); out_string = emalloc(num_len+2); if (mpz_sgn(*gmpnum) < 0) { num_len++; |
