From c6cb5bf4aa75b79bdc3cd1af38788a32bd2c8e1a Mon Sep 17 00:00:00 2001 From: Rainer Gerhards Date: Tue, 25 Sep 2012 17:37:35 +0200 Subject: fix invalid free in PoC == optimization --- grammar/rainerscript.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'grammar/rainerscript.c') diff --git a/grammar/rainerscript.c b/grammar/rainerscript.c index 035b017d..a2455755 100644 --- a/grammar/rainerscript.c +++ b/grammar/rainerscript.c @@ -1088,6 +1088,7 @@ cnfexprEval(struct cnfexpr *expr, struct var *ret, void* usrptr) if(bMustFree) es_deleteStr(estr_r); } } + if(r.datatype == 'S') es_deleteStr(r.d.estr); } } else { cnfexprEval(expr->r, &r, usrptr); @@ -1103,8 +1104,9 @@ cnfexprEval(struct cnfexpr *expr, struct var *ret, void* usrptr) } else { ret->d.n = (l.d.n == r.d.n); /*CMP*/ } + if(r.datatype == 'S') es_deleteStr(r.d.estr); } - FREE_BOTH_RET; + if(l.datatype == 'S') es_deleteStr(l.d.estr); break; case CMP_NE: cnfexprEval(expr->l, &l, usrptr); -- cgit v1.2.3