diff options
author | Bram Moolenaar <Bram@vim.org> | 2011-03-03 15:54:50 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2011-03-03 15:54:50 +0100 |
commit | f63c49d4e93ef064836d6b96609f78813d72871c (patch) | |
tree | 63c43f039c1d92768ddd8163bc987aa4de57f058 /src/ex_docmd.c | |
parent | 6eb634ef1f40623192f331dda7b13e34fffba9e2 (diff) |
updated for version 7.3.138v7.3.138
Problem: ":com" changes the multi-byte text of :echo. (Dimitar Dimitrov)
Solution: Search for K_SPECIAL as a byte, not a character. (Ben Schmidt)
Diffstat (limited to 'src/ex_docmd.c')
-rw-r--r-- | src/ex_docmd.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/ex_docmd.c b/src/ex_docmd.c index 733d62ee78..27048773e2 100644 --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -6054,15 +6054,17 @@ do_ucmd(eap) end = vim_strchr(start + 1, '>'); if (buf != NULL) { - ksp = vim_strchr(p, K_SPECIAL); - if (ksp != NULL && (start == NULL || ksp < start || end == NULL) + for (ksp = p; *ksp != NUL && *ksp != K_SPECIAL; ++ksp) + ; + if (*ksp == K_SPECIAL + && (start == NULL || ksp < start || end == NULL) && ((ksp[1] == KS_SPECIAL && ksp[2] == KE_FILLER) # ifdef FEAT_GUI || (ksp[1] == KS_EXTRA && ksp[2] == (int)KE_CSI) # endif )) { - /* K_SPECIAL han been put in the buffer as K_SPECIAL + /* K_SPECIAL has been put in the buffer as K_SPECIAL * KS_SPECIAL KE_FILLER, like for mappings, but * do_cmdline() doesn't handle that, so convert it back. * Also change K_SPECIAL KS_EXTRA KE_CSI into CSI. */ |