summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZev Weiss <zev@bewilderbeest.net>2015-10-25 21:59:32 -0500
committerJim Meyering <meyering@fb.com>2015-10-25 21:09:41 -0700
commitc72e452c5ebffb6e6d744e5f8b91ca0c212c5d7f (patch)
tree5ed1843b7f90bc5e41d55edbb1596e553ad57534
parentfbc5a95ee7084b2076d9b00c1458613fd3d582a6 (diff)
downloadgrep-c72e452c5ebffb6e6d744e5f8b91ca0c212c5d7f.tar.gz
dfa: plug a memory leak in dfamust
* src/dfa.c (dfamust): Ensure MP is freed, by refraining from returning early when, at "done:" *RESULT is NULL.
-rw-r--r--src/dfa.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/dfa.c b/src/dfa.c
index c1a00f8d..856a8869 100644
--- a/src/dfa.c
+++ b/src/dfa.c
@@ -4146,15 +4146,17 @@ dfamust (struct dfa const *d)
break;
}
}
-done:
- if (!*result)
- return NULL;
-
- struct dfamust *dm = xmalloc (sizeof *dm);
- dm->exact = exact;
- dm->begline = begline;
- dm->endline = endline;
- dm->must = xstrdup (result);
+ done:;
+
+ struct dfamust *dm = NULL;
+ if (*result)
+ {
+ dm = xmalloc (sizeof *dm);
+ dm->exact = exact;
+ dm->begline = begline;
+ dm->endline = endline;
+ dm->must = xstrdup (result);
+ }
while (mp)
{