From 31e8d4676ac8a358861626a7760ec6412c329057 Mon Sep 17 00:00:00 2001
From: nicm <nicm>
Date: Mon, 13 Jan 2025 08:58:34 +0000
Subject: [PATCH] Count line numbers correctly inside strings, reported by
 Pedro Navarro in GitHub issue 4325.

---
 cmd-parse.y | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/cmd-parse.y b/cmd-parse.y
index fbed727b..594e8cb3 100644
--- a/cmd-parse.y
+++ b/cmd-parse.y
@@ -1627,6 +1627,7 @@ yylex_token_tilde(char **buf, size_t *len)
 static char *
 yylex_token(int ch)
 {
+	struct cmd_parse_state	*ps = &parse_state;
 	char			*buf;
 	size_t			 len;
 	enum { START,
@@ -1650,9 +1651,12 @@ yylex_token(int ch)
 				ch = '\r';
 			}
 		}
-		if (state == NONE && ch == '\n') {
-			log_debug("%s: end at EOL", __func__);
-			break;
+		if (ch == '\n') {
+			if (state == NONE) {
+				log_debug("%s: end at EOL", __func__);
+				break;
+			}
+			ps->input->line++;
 		}
 
 		/* Whitespace or ; or } ends a token unless inside quotes. */