patch 9.0.1164: evaluating string expression advances function line
Problem: Evaluating string expression advances function line.
Solution: Disable function lines while parsing a string expression.
(Hirohito Higashi, closes #11796)
diff --git a/src/vim9expr.c b/src/vim9expr.c
index 3acb97b..7f5f4c8 100644
--- a/src/vim9expr.c
+++ b/src/vim9expr.c
@@ -733,7 +733,15 @@
cctx->ctx_instr.ga_len = 0;
cctx->ctx_instr.ga_maxlen = 0;
cctx->ctx_instr.ga_data = NULL;
+
+ // avoid peeking a next line
+ int galen_save = cctx->ctx_ufunc->uf_lines.ga_len;
+ cctx->ctx_ufunc->uf_lines.ga_len = 0;
+
expr_res = compile_expr0(&s, cctx);
+
+ cctx->ctx_ufunc->uf_lines.ga_len = galen_save;
+
s = skipwhite(s);
trailing_error = *s != NUL;