Index: grep/src/kwset.c
diff -u grep/src/kwset.c:1.12 grep/src/kwset.c:1.13
--- grep/src/kwset.c:1.12 Tue Jul 5 01:17:41 2005
+++ grep/src/kwset.c Tue Jul 5 02:06:29 2005
@@ -180,7 +180,10 @@
link->trie = (struct trie *) obstack_alloc(&kwset->obstack,
sizeof (struct trie));
if (!link->trie)
- return _("memory exhausted");
+ {
+ obstack_free(&kwset->obstack, link);
+ return _("memory exhausted");
+ }
link->trie->accepting = 0;
link->trie->links = NULL;
link->trie->parent = trie;
@@ -401,6 +404,8 @@
/* Looking for just one string. Extract it from the trie. */
kwset->target = obstack_alloc(&kwset->obstack, kwset->mind);
+ if (!kwset->target)
+ return _("memory exhausted");
for (i = kwset->mind - 1, curr = kwset->trie; i >= 0; --i)
{
kwset->target[i] = curr->links->label;