From afb75f22b2702ad241ae7839aad3ba2ef707718d Mon Sep 17 00:00:00 2001
From: David Lawrence Ramsey <pooka109@gmail.com>
Date: Mon, 29 Dec 2003 02:15:23 +0000
Subject: [PATCH] clean up a bit of weirdness in do_replace_loop()

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1606 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
---
 ChangeLog    |  7 +++++--
 src/search.c | 20 ++++++--------------
 2 files changed, 11 insertions(+), 16 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 5ff94c9e..5c0559f2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -83,8 +83,11 @@ CVS code -
 	  certain zero-length regex replacements ("^", "$", and "^$").
 	  Add a no_sameline parameter to findnextstr(), and set it in
 	  the calls in do_replace_loop() when such regexes are found, so
-	  that such regexes are only found once per line. (DLR; found by
-	  Mike Frysinger and DLR)
+	  that such regexes are only found once per line.  Also change
+	  length_change from a long to an int; size_t is unsuitable due
+	  to its being unsigned. (DLR; found by Mike Frysinger and DLR)
+	  David Benbennick: Add a few minor cleanups to
+	  do_replace_loop().
 - winio.c:
   get_kbinput(), get_accepted_kbinput()
 	- Don't pass in the value of the REBIND_DELETE flag anymore.
diff --git a/src/search.c b/src/search.c
index 8b1c9f76..53c05208 100644
--- a/src/search.c
+++ b/src/search.c
@@ -622,7 +622,6 @@ int do_replace_loop(const char *prevanswer, const filestruct *begin,
     int beginline = 0, caretdollar = 0;
 #endif
     filestruct *fileptr = NULL;
-    char *copy;
 
     switch (*i) {
 	case -1:	/* Aborted enter. */
@@ -716,6 +715,9 @@ int do_replace_loop(const char *prevanswer, const filestruct *begin,
 	    do_replace_highlight(FALSE, exp_word);
 	    free(exp_word);
 	    curs_set(1);
+
+	    if (*i == -1)	/* We canceled the replace. */
+		break;
 	}
 
 #ifdef HAVE_REGEX_H
@@ -726,8 +728,8 @@ int do_replace_loop(const char *prevanswer, const filestruct *begin,
 #endif
 
 	if (*i > 0 || replaceall) {	/* Yes, replace it!!!! */
-	    long length_change;
-	    size_t match_len;
+	    char *copy;
+	    int length_change;
 
 	    if (*i == 2)
 		replaceall = 1;
@@ -741,13 +743,6 @@ int do_replace_loop(const char *prevanswer, const filestruct *begin,
 
 	    length_change = strlen(copy) - strlen(current->data);
 
-#ifdef HAVE_REGEX_H
-	    if (ISSET(USE_REGEXP))
-		match_len = regmatches[0].rm_eo - regmatches[0].rm_so;
-	    else
-#endif
-		match_len = strlen(prevanswer);
-
 #ifndef NANO_SMALL
 	    if (current == mark_beginbuf && mark_beginx > current_x) {
 		if (mark_beginx < current_x + match_len)
@@ -780,10 +775,7 @@ int do_replace_loop(const char *prevanswer, const filestruct *begin,
 	    edit_refresh();
 	    set_modified();
 	    numreplaced++;
-
-	} else if (*i == -1)	/* Break out of the loop, else do
-				 * nothing and continue loop. */
-	    break;
+	}
     }
 
     /* If text has been added to the magicline, make a new magicline. */
-- 
GitLab