From 27149e0071c3fa38c81526f63a997bedfd6e2be8 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Tue, 3 May 2022 06:11:22 +0800 Subject: vim-patch:8.2.4858: K_SPECIAL may be escaped twice Problem: K_SPECIAL may be escaped twice. Solution: Avoid double escaping. (closes vim/vim#10340) https://github.com/vim/vim/commit/db08887f24d20be11d184ce321bc0890613e42bd --- src/nvim/viml/parser/expressions.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src/nvim/viml/parser/expressions.c') diff --git a/src/nvim/viml/parser/expressions.c b/src/nvim/viml/parser/expressions.c index 29d686193d..01fc282891 100644 --- a/src/nvim/viml/parser/expressions.c +++ b/src/nvim/viml/parser/expressions.c @@ -1651,10 +1651,11 @@ static void parse_quoted_string(ParserState *const pstate, ExprASTNode *const no } switch (*p) { // A "\" form occupies at least 4 characters, and produces up to - // 6 characters: reserve space for 2 extra, but do not compute actual - // length just now, it would be costy. + // to 9 characters (6 for the char and 3 for a modifier): + // reserve space for 5 extra, but do not compute actual length + // just now, it would be costly. case '<': - size += 2; + size += 5; break; // Hexadecimal, always single byte, but at least three bytes each. case 'x': @@ -1822,7 +1823,7 @@ static void parse_quoted_string(ParserState *const pstate, ExprASTNode *const no flags |= FSK_SIMPLIFY; } const size_t special_len = trans_special((const char_u **)&p, (size_t)(e - p), - (char_u *)v_p, flags, NULL); + (char_u *)v_p, flags, false, NULL); if (special_len != 0) { v_p += special_len; } else { -- cgit