From f60ced696bc752cdc1a1f45ce2cc9d6149be7087 Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Fri, 3 Jul 2020 11:16:02 +0300 Subject: Fix double free error with -M. --- field.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'field.c') diff --git a/field.c b/field.c index 0e84447a..c21046b9 100644 --- a/field.c +++ b/field.c @@ -90,6 +90,8 @@ Regexp *FPAT_re_no_case = NULL; Regexp *FPAT_regexp = NULL; NODE *Null_field = NULL; +#define clear_mpfr(n) ((n)->flags &= ~(MPFN | MPZN | NUMCUR)) + /* init_fields --- set up the fields array to start with */ void @@ -230,6 +232,7 @@ rebuild_record() } n->stptr = cops; + clear_mpfr(n); unref(r); fields_arr[i] = n; assert((n->flags & WSTRCUR) == 0); @@ -347,6 +350,11 @@ reset_record() } } +/* + * purge_record --- throw away the fields, make sure that + * individual nodes remain valid. + */ + static void purge_record() { -- cgit v1.2.3