From dc1f81addfd428fca2c8115ebbfdb2e8a26d8375 Mon Sep 17 00:00:00 2001 From: Rainer Gerhards Date: Fri, 18 Oct 2013 07:02:27 +0200 Subject: bugfix: segfault if re_extract() function was used and no match found --- grammar/rainerscript.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'grammar/rainerscript.c') diff --git a/grammar/rainerscript.c b/grammar/rainerscript.c index f4833679..f9c5047c 100644 --- a/grammar/rainerscript.c +++ b/grammar/rainerscript.c @@ -1315,7 +1315,10 @@ finalize_it: if(bHadNoMatch) { cnfexprEval(func->expr[4], &r[4], usrptr); estr = var2String(&r[4], &bMustFree); - if(r[4].datatype == 'S') es_deleteStr(r[4].d.estr); + /* Note that we do NOT free the string that was returned/created + * for r[4]. We pass it to the caller, which in turn frees it. + * This saves us doing one unnecessary memory alloc & write. + */ } ret->datatype = 'S'; ret->d.estr = estr; -- cgit v1.2.3