in do_replace_loop(), treat real_current as current and real_current_x
as current_x instead of using copies of them (which aren't kept up to date) when calling findnextstr(); this fixes a problem where the search can wrap when it shouldn't and skip over all matches after the wrap point git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2119 35c25a1d-7b9e-4130-9fde-d3aeb78583b8master
parent
3f35864b10
commit
3de81bc33d
|
@ -290,8 +290,8 @@ CVS code -
|
|||
flag, and add new parameter needle_len (used to return the
|
||||
length of the match). (DLR)
|
||||
do_replace_loop()
|
||||
- Miscellaneous cleanups: set current to real_current and
|
||||
current_x to current_x_save, only turn the mark off and call
|
||||
- Miscellaneous cleanups: treat real_current as current and
|
||||
real_current_x as current_x, only turn the mark off and call
|
||||
edit_refresh() if the mark was originally on, and make
|
||||
length_change a ssize_t. (DLR)
|
||||
- Return ssize_t instead of int. (DLR)
|
||||
|
|
|
@ -671,8 +671,7 @@ ssize_t do_replace_loop(const char *needle, const filestruct
|
|||
{
|
||||
ssize_t numreplaced = -1;
|
||||
size_t match_len;
|
||||
size_t pww_save = placewewant, current_x_save = *real_current_x;
|
||||
const filestruct *current_save = real_current;
|
||||
size_t pww_save = placewewant;
|
||||
bool replaceall = FALSE;
|
||||
#ifdef HAVE_REGEX_H
|
||||
/* The starting-line match and bol/eol regex flags. */
|
||||
|
@ -713,7 +712,7 @@ ssize_t do_replace_loop(const char *needle, const filestruct
|
|||
#else
|
||||
FALSE
|
||||
#endif
|
||||
, current_save, current_x_save, needle, &match_len)) {
|
||||
, real_current, *real_current_x, needle, &match_len)) {
|
||||
|
||||
int i = 0;
|
||||
|
||||
|
@ -735,7 +734,7 @@ ssize_t do_replace_loop(const char *needle, const filestruct
|
|||
#endif
|
||||
|
||||
if (!replaceall) {
|
||||
edit_redraw(current_save, pww_save);
|
||||
edit_redraw(real_current, pww_save);
|
||||
pww_save = placewewant;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue