diff --git a/ChangeLog b/ChangeLog index 136d3be7..0badeffe 100644 --- a/ChangeLog +++ b/ChangeLog @@ -134,6 +134,12 @@ CVS code - replace_line() - Make new_line_size and search_match_count size_t's, for consistency. (DLR) + do_replace_loop() + - When moving to the next match, update the screen using + edit_refresh() instead of edit_redraw(), as the latter won't + work properly when we've replaced one or more instances of a + string in copy and haven't yet updated current->data to match + copy. (DLR) - utils.c: num_of_digits() - Use a size_t instead of an int, and rename to digits(). (DLR) diff --git a/src/search.c b/src/search.c index 0fbdac9a..45ec4f6f 100644 --- a/src/search.c +++ b/src/search.c @@ -681,7 +681,6 @@ ssize_t do_replace_loop(const char *needle, const filestruct { ssize_t numreplaced = -1; size_t match_len; - size_t pww_save = placewewant; bool replaceall = FALSE; #ifdef HAVE_REGEX_H /* The starting-line match and bol/eol regex flags. */ @@ -743,10 +742,8 @@ ssize_t do_replace_loop(const char *needle, const filestruct } #endif - if (!replaceall) { - edit_redraw(real_current, pww_save); - pww_save = placewewant; - } + if (!replaceall) + edit_refresh(); /* Record for the return value that we found the search * string. */