# HG changeset patch # User Bram Moolenaar # Date 1659105004 -7200 # Node ID 5063dfe96a59e7bbea8f92380e059add0d92e2f7 # Parent db3afe53702b80190a3709820759915142673a2e patch 9.0.0104: going beyond allocated memory when evaluating string constant Commit: https://github.com/vim/vim/commit/1e56bda9048a9625bce6e660938c834c5c15b07d Author: Bram Moolenaar Date: Fri Jul 29 15:28:27 2022 +0100 patch 9.0.0104: going beyond allocated memory when evaluating string constant Problem: Going beyond allocated memory when evaluating string constant. Solution: Properly skip over form. diff --git a/src/testdir/test_eval_stuff.vim b/src/testdir/test_eval_stuff.vim index 3c168f2f59b58599dd68c262a83e472838c08c43..c63082e8e8b6dcc823d2fee3f3054ee363e8f11e GIT binary patch literal 23684 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' to avoid using '{' inside for string + // interpolation. + if (p[1] != '*') + flags |= FSK_SIMPLIFY; + if (find_special_key(&p, &modifiers, flags, NULL) != 0) + --p; // leave "p" on the ">" + } } else if (interpolate && (*p == '{' || *p == '}')) { diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -736,6 +736,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 104, +/**/ 103, /**/ 102,