summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2019-01-14 20:33:32 +0200
committerArnold D. Robbins <arnold@skeeve.com>2019-01-14 20:33:32 +0200
commit63a31bee666a9bf9e37eda447f7742b07917dc74 (patch)
tree8b09ec6ebcd88a8dc760d327faca118a251fa8b3
parent5ba504111dee165e033b3a9087c13ffca2b30302 (diff)
downloadgawk-63a31bee666a9bf9e37eda447f7742b07917dc74.tar.gz
Fix small potential memory leak for intdiv.
-rwxr-xr-xChangeLog6
-rw-r--r--builtin.c4
-rw-r--r--mpfr.c4
3 files changed, 12 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 86ba9b25..658088d6 100755
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2019-01-14 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (do_intdiv): Add unref of subscripts.
+ * mpfr.c (do_mpfr_intdiv): Ditto.
+ Thanks to Andy Schorr for noticing.
+
2019-01-09 John E. Malmberg <wb8tyw@qsl.net>
* awk.h: For non GCC, have __attribute__ definition match
diff --git a/builtin.c b/builtin.c
index f2d31059..3d57234b 100644
--- a/builtin.c
+++ b/builtin.c
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 1986, 1988, 1989, 1991-2018 the Free Software Foundation, Inc.
+ * Copyright (C) 1986, 1988, 1989, 1991-2019 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -4048,11 +4048,13 @@ do_intdiv(int nargs)
lhs = assoc_lookup(result, sub);
unref(*lhs);
*lhs = make_number((AWKNUM) quotient);
+ unref(sub);
sub = make_string("remainder", 9);
lhs = assoc_lookup(result, sub);
unref(*lhs);
*lhs = make_number((AWKNUM) remainder);
+ unref(sub);
DEREF(denominator);
DEREF(numerator);
diff --git a/mpfr.c b/mpfr.c
index 8478570f..c3ba2a6a 100644
--- a/mpfr.c
+++ b/mpfr.c
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 2012, 2013, 2015, 2017, 2018,
+ * Copyright (C) 2012, 2013, 2015, 2017, 2018, 2019,
* the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
@@ -1265,11 +1265,13 @@ do_mpfr_intdiv(int nargs)
lhs = assoc_lookup(result, sub);
unref(*lhs);
*lhs = quotient;
+ unref(sub);
sub = make_string("remainder", 9);
lhs = assoc_lookup(result, sub);
unref(*lhs);
*lhs = remainder;
+ unref(sub);
return make_number((AWKNUM) 0.0);
}