# HG changeset patch # User Bram Moolenaar # Date 1299164090 -3600 # Node ID ea399ac2c1b963b068beed88bfaff7620d345333 # Parent 417c04135ca2ec03b6357404b62761ca9453cdba updated for version 7.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) diff --git a/src/ex_docmd.c b/src/ex_docmd.c --- 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. */ diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -715,6 +715,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 138, +/**/ 137, /**/ 136,