diff options
author | Jake Hilmer <jakob@hilmer.dk> | 2009-04-14 15:31:00 +0200 |
---|---|---|
committer | Carlos Maddela <e7appew@gmail.com> | 2018-12-29 12:17:20 +0000 |
commit | 1fac1ec218b12c35d13ac43e04778d3902fda23f (patch) | |
tree | 1a3b8ada2061a45586cf12a44ae06f0818aba778 | |
parent | 1921ed09ead629dea8ce23954b66ef2cc80d11c7 (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.c | 17 |
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 { |