From 8ffc33cd891a9008a70185f736b074e06b5044a3 Mon Sep 17 00:00:00 2001 From: Benno Schulenberg Date: Sun, 26 Jul 2015 08:20:28 +0000 Subject: [PATCH] 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 --- ChangeLog | 4 ++++ src/search.c | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/ChangeLog b/ChangeLog index 50dd3bfc..37e2c1fb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2015-07-26 Benno Schulenberg + * 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 * 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 index b2e08079..6500bd5e 100644 --- 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