aboutsummaryrefslogtreecommitdiffstats
path: root/mpfr.c
diff options
context:
space:
mode:
authorAndrew J. Schorr <aschorr@telemetry-investments.com>2017-01-26 14:29:00 -0500
committerAndrew J. Schorr <aschorr@telemetry-investments.com>2017-01-26 14:29:00 -0500
commitbaa3d88037962e5a0cd97ad048bb63f8efe2d789 (patch)
treee90617c2aea4d1d428b852aacb12f73212fa6f11 /mpfr.c
parenta405df4fd26c1a1428fb3eb9d749c42295256634 (diff)
downloadegawk-baa3d88037962e5a0cd97ad048bb63f8efe2d789.tar.gz
egawk-baa3d88037962e5a0cd97ad048bb63f8efe2d789.tar.bz2
egawk-baa3d88037962e5a0cd97ad048bb63f8efe2d789.zip
Add some paranoid checks to make sure stptr was malloced before freeing it.
Diffstat (limited to 'mpfr.c')
-rw-r--r--mpfr.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/mpfr.c b/mpfr.c
index c0f1ff0c..8a5e9a69 100644
--- a/mpfr.c
+++ b/mpfr.c
@@ -381,12 +381,10 @@ mpg_format_val(const char *format, int index, NODE *s)
}
s->flags = oflags;
s->stlen = r->stlen;
- if ((s->flags & STRCUR) != 0)
+ if ((s->flags & (MALLOC|STRCUR)) == (MALLOC|STRCUR))
efree(s->stptr);
s->stptr = r->stptr;
freenode(r); /* Do not unref(r)! We want to keep s->stptr == r->stpr. */
-
- s->flags |= STRCUR;
free_wstr(s);
return s;
}