cb1bb13
diff -up texinfo-6.4/info/search.c.orig texinfo-6.4/info/search.c
cb1bb13
--- texinfo-6.4/info/search.c.orig	2017-04-17 09:39:56.000000000 +0200
cb1bb13
+++ texinfo-6.4/info/search.c	2017-12-04 11:31:09.180059724 +0100
cb1bb13
@@ -201,6 +201,7 @@ regexp_search (char *regexp, int is_lite
cb1bb13
       char *buf = xmalloc (size);
cb1bb13
       regerror (result, &preg, buf, size);
cb1bb13
       info_error (_("regexp error: %s"), buf);
cb1bb13
+      free (buf);
cb1bb13
       return search_invalid;
cb1bb13
     }
cb1bb13
 
cb1bb13
@@ -215,7 +216,10 @@ regexp_search (char *regexp, int is_lite
cb1bb13
   extend_matches (match_state);
cb1bb13
 
cb1bb13
   if (match_state->match_count == 0)
cb1bb13
-    return search_not_found;
cb1bb13
+    {
cb1bb13
+      free_matches (match_state);
cb1bb13
+      return search_not_found;
cb1bb13
+    }
cb1bb13
   else
cb1bb13
     return search_success;
cb1bb13
 }
cb1bb13
diff -up texinfo-6.4/info/session.c.orig texinfo-6.4/info/session.c
cb1bb13
--- texinfo-6.4/info/session.c.orig	2017-12-04 11:31:15.023062714 +0100
cb1bb13
+++ texinfo-6.4/info/session.c	2017-12-04 11:31:41.870076452 +0100
cb1bb13
@@ -3953,10 +3953,7 @@ info_search_in_node_internal (WINDOW *wi
cb1bb13
     }
cb1bb13
   
cb1bb13
   if (result != search_success)
cb1bb13
-    {
cb1bb13
-      free_matches (&matches);
cb1bb13
       return result;
cb1bb13
-    }
cb1bb13
 
cb1bb13
   if (node->flags & N_Simple)
cb1bb13
     {