diff options
Diffstat (limited to 'extension/intdiv.c')
-rw-r--r-- | extension/intdiv.c | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/extension/intdiv.c b/extension/intdiv.c index 34b19a02..94c970ed 100644 --- a/extension/intdiv.c +++ b/extension/intdiv.c @@ -191,7 +191,7 @@ do_intdiv(int nargs, awk_value_t *result, struct awk_ext_func *unused) /* extended precision */ mpz_ptr numer, denom; mpz_t numer_tmp, denom_tmp; - mpz_ptr quotient, remainder; + mpz_t quotient, remainder; /* convert numerator and denominator to integer */ if (!(numer = mpz_conv(&nv, numer_tmp))) { @@ -213,9 +213,8 @@ do_intdiv(int nargs, awk_value_t *result, struct awk_ext_func *unused) return make_number(-1, result); } - /* ask gawk to allocate return values for us */ - quotient = get_mpz_ptr(); - remainder = get_mpz_ptr(); + mpz_init(quotient); + mpz_init(remainder); /* do the division */ mpz_tdiv_qr(quotient, remainder, numer, denom); @@ -223,12 +222,8 @@ do_intdiv(int nargs, awk_value_t *result, struct awk_ext_func *unused) array_set_mpz(array, "quotient", 8, quotient); array_set_mpz(array, "remainder", 9, remainder); - /* values were copied, so release out local ones */ mpz_clear(quotient); - gawk_free(quotient); - mpz_clear(remainder); - gawk_free(remainder); /* release temporary variables */ if (numer == numer_tmp) |