commit 8ffc33cd891a9008a70185f736b074e06b5044a3
parent ee7b0956789c6c43f2073ecb9c2864d777b5b398
Author: Benno Schulenberg <bensberg@justemail.net>
Date: Sun, 26 Jul 2015 08:20:28 +0000
Finding each zero-length match only once, when doing regex replacements.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@5319 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
Diffstat:
2 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/ChangeLog b/ChangeLog
@@ -1,3 +1,7 @@
+2015-07-26 Benno Schulenberg <bensberg@justemail.net>
+ * src/search.c (do_replace_loop): When doing regex replacements, find
+ each zero-length match only once. This fixes Savannah bug #45626.
+
2015-07-25 Benno Schulenberg <bensberg@justemail.net>
* src/global.c (shortcut_init, strtosc), src/files.c (savefile),
doc/man/nanorc.5, doc/texinfo/nano.texi: Add a new bindable function,
diff --git a/src/search.c b/src/search.c
@@ -757,6 +757,12 @@ ssize_t do_replace_loop(
#endif
}
+#ifdef HAVE_REGEX_H
+ /* Don't find the same zero-length match again. */
+ if (match_len == 0)
+ match_len++;
+#endif
+
/* Set the cursor at the last character of the replacement
* text, so searching will resume after the replacement
* text. Note that current_x might be set to (size_t)-1