50 lines
1.2 KiB
Diff
50 lines
1.2 KiB
Diff
|
fix crash in incremental search for \
|
||
|
|
||
|
--- info/search.c 2017/07/05 17:56:51 7906
|
||
|
+++ info/search.c 2017/07/05 19:16:44 7907
|
||
|
@@ -174,8 +174,8 @@
|
||
|
state->match_count = match_count;
|
||
|
}
|
||
|
|
||
|
-/* Search BUFFER for REGEXP. Pass back the list of matches
|
||
|
- in MATCH_STATE. */
|
||
|
+/* Search BUFFER for REGEXP. If matches are found, pass back the list of
|
||
|
+ matches in MATCH_STATE. */
|
||
|
enum search_result
|
||
|
regexp_search (char *regexp, int is_literal, int is_insensitive,
|
||
|
char *buffer, size_t buflen,
|
||
|
@@ -201,6 +201,7 @@
|
||
|
char *buf = xmalloc (size);
|
||
|
regerror (result, &preg, buf, size);
|
||
|
info_error (_("regexp error: %s"), buf);
|
||
|
+ free (buf);
|
||
|
return search_invalid;
|
||
|
}
|
||
|
|
||
|
@@ -215,7 +216,10 @@
|
||
|
extend_matches (match_state);
|
||
|
|
||
|
if (match_state->match_count == 0)
|
||
|
- return search_not_found;
|
||
|
+ {
|
||
|
+ free_matches (match_state);
|
||
|
+ return search_not_found;
|
||
|
+ }
|
||
|
else
|
||
|
return search_success;
|
||
|
}
|
||
|
--- info/session.c 2017/07/05 17:56:51 7906
|
||
|
+++ info/session.c 2017/07/05 19:16:44 7907
|
||
|
@@ -3953,10 +3953,7 @@
|
||
|
}
|
||
|
|
||
|
if (result != search_success)
|
||
|
- {
|
||
|
- free_matches (&matches);
|
||
|
- return result;
|
||
|
- }
|
||
|
+ return result;
|
||
|
|
||
|
if (node->flags & N_Simple)
|
||
|
{
|