From 277701f530948898c1f666ea5e3d5b5e005863af Mon Sep 17 00:00:00 2001
From: Benno Schulenberg <bensberg@justemail.net>
Date: Sun, 18 May 2014 10:16:07 +0000
Subject: [PATCH] Not matching the ^ anchor when looking further on in a line.

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

diff --git a/ChangeLog b/ChangeLog
index 110453d7..21d34e5b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2014-05-18  Benno Schulenberg  <bensberg@justemail.net>
+	* src/nano (precalc_multicolorinfo): Do not match the ^ anchor when
+	looking further on in a line.  This prevents an end="^$" from being
+	sometimes mistakenly matched.  Fix inspired by Savannah bug #27708.
+
 2014-05-17  Benno Schulenberg  <bensberg@justemail.net>
 	* doc/syntax/json.nanorc: New file, originally from Aapo Rantalainen,
 	but edited, extended, and improved.  See Savannah patch #7410.
diff --git a/src/nano.c b/src/nano.c
index bf2d17bf..b9fa53ef 100644
--- a/src/nano.c
+++ b/src/nano.c
@@ -1884,7 +1884,8 @@ void precalc_multicolorinfo(void)
 			goto precalc_cleanup;
 		}
 
-		while ((nostart = regexec(tmpcolor->start, &fileptr->data[startx], 1, &startmatch, 0)) == 0) {
+		while ((nostart = regexec(tmpcolor->start, &fileptr->data[startx], 1, &startmatch,
+					  (startx == 0) ? 0 : REG_NOTBOL)) == 0) {
 		    /* Look for an end, and start marking how many lines are
 		     * encompassed, which should speed up rendering later. */
 		    startx += startmatch.rm_eo;
@@ -1893,7 +1894,8 @@ void precalc_multicolorinfo(void)
 #endif
 
 		    /* Look first on this line for an end. */
-		    if (regexec(tmpcolor->end, &fileptr->data[startx], 1, &endmatch, 0) == 0) {
+		    if (regexec(tmpcolor->end, &fileptr->data[startx], 1, &endmatch,
+				(startx == 0) ? 0 : REG_NOTBOL) == 0) {
 			startx += endmatch.rm_eo;
 			fileptr->multidata[tmpcolor->id] |= CSTARTENDHERE;
 #ifdef DEBUG
-- 
GitLab