diff -Naur ncurses-hexedit-0.9.7.orig/src/windows.c ncurses-hexedit-0.9.7/src/windows.c --- ncurses-hexedit-0.9.7.orig/src/windows.c 2009-04-14 14:53:56.000000000 +0200 +++ ncurses-hexedit-0.9.7/src/windows.c 2009-04-14 15:31:00.000000000 +0200 @@ -692,20 +692,21 @@ 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 {