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
index 733d62e..2704877 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -6054,15 +6054,17 @@
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
index e790297..4aba532 100644
--- a/src/version.c
+++ b/src/version.c
@@ -715,6 +715,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 138,
+/**/
137,
/**/
136,