summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJake Hilmer <jakob@hilmer.dk>2009-04-14 15:31:00 +0200
committerCarlos Maddela <e7appew@gmail.com>2018-12-29 12:17:20 +0000
commit1fac1ec218b12c35d13ac43e04778d3902fda23f (patch)
tree1a3b8ada2061a45586cf12a44ae06f0818aba778
parent1921ed09ead629dea8ce23954b66ef2cc80d11c7 (diff)
Fix segfault when searching for text that isn't in the file being viewed.
Description: Fix segfault when searching for text that isn't in the file being viewed. Author: Jakob Hilmer <jakob@hilmer.dk> Origin: other, https://launchpadlibrarian.net/25448409/ncurses-hexedit.patch Bug-Debian: https://bugs.debian.org/536736 Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/ncurses-hexedit/+bug/122349 Gbp-Pq: Name fix_segfault.patch
-rw-r--r--src/windows.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/windows.c b/src/windows.c
index d66e05a..f64b790 100644
--- a/src/windows.c
+++ b/src/windows.c
@@ -692,20 +692,21 @@ search (int findnext)
spot = boyer_moore_search (retr->str, offset + 1,
last_str_len = retr->len,
Globals.filesize - offset);
+ if (laststr)
+ free (laststr);
+ laststr = malloc (retr->len + 1);
+ memset (laststr, 0x00, retr->len + 1);
+ memcpy (laststr, retr->str, retr->len);
+ free (retr->str);
+ retr->str = NULL;
+ retr->len = 0;
+
if (spot && spot->flag)
{
offset += spot->offset + 1; /* started search one character
ahead of offset */
cursor_y = 1;
cursor_x = mappos (offset & M_0x0F);
- if (laststr)
- free (laststr);
- laststr = malloc (retr->len + 1);
- memset (laststr, 0x00, retr->len + 1);
- memcpy (laststr, retr->str, retr->len);
- free (retr->str);
- retr->str = NULL;
- retr->len = 0;
}
else
{