]> granicus.if.org Git - php/commitdiff
Fix leak in gmp_pow()
authorNikita Popov <nikic@php.net>
Thu, 16 Apr 2015 14:00:31 +0000 (16:00 +0200)
committerNikita Popov <nikic@php.net>
Thu, 16 Apr 2015 14:04:19 +0000 (16:04 +0200)
ext/gmp/gmp.c

index ba59acb5135f62ebd9f0c7f78867a3551f85317f..12b88c66688b10daa62c809626dbc6978a65965b 100644 (file)
@@ -1428,11 +1428,12 @@ ZEND_FUNCTION(gmp_pow)
                RETURN_FALSE;
        }
 
-       INIT_GMP_RETVAL(gmpnum_result);
        if (Z_TYPE_P(base_arg) == IS_LONG && Z_LVAL_P(base_arg) >= 0) {
+               INIT_GMP_RETVAL(gmpnum_result);
                mpz_ui_pow_ui(gmpnum_result, Z_LVAL_P(base_arg), exp);
        } else {
                FETCH_GMP_ZVAL(gmpnum_base, base_arg, temp_base);
+               INIT_GMP_RETVAL(gmpnum_result);
                mpz_pow_ui(gmpnum_result, gmpnum_base, exp);
                FREE_GMP_TEMP(temp_base);
        }