aboutsummaryrefslogtreecommitdiffstats
path: root/extension
diff options
context:
space:
mode:
Diffstat (limited to 'extension')
-rw-r--r--extension/ChangeLog6
-rw-r--r--extension/intdiv.c7
2 files changed, 13 insertions, 0 deletions
diff --git a/extension/ChangeLog b/extension/ChangeLog
index 223b817d..856bff55 100644
--- a/extension/ChangeLog
+++ b/extension/ChangeLog
@@ -1,3 +1,9 @@
+2020-07-13 Arnold D. Robbins <arnold@skeeve.com>
+
+ * intdiv.c (do_intdiv): Release the quotient and remainder
+ values when done with them. Fixes a memory leak. Thanks to
+ Andrew Schorr and valgrind for the report.
+
2020-06-10 Arnold D. Robbins <arnold@skeeve.com>
Miscellanious fixes from Michael Builov <mbuilov@gmail.com>.
diff --git a/extension/intdiv.c b/extension/intdiv.c
index 4e3ae50d..34b19a02 100644
--- a/extension/intdiv.c
+++ b/extension/intdiv.c
@@ -223,6 +223,13 @@ 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)
mpz_clear(numer);