changeset 13587:c0ebd15a0908 v8.0.1666

patch 8.0.1666: % argument in ch_log() causes trouble commit https://github.com/vim/vim/commit/d5359b24ceefefed4b3a37efd9bf54176935f3a5 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Apr 5 22:44:39 2018 +0200 patch 8.0.1666: % argument in ch_log() causes trouble Problem: % argument in ch_log() causes trouble. Solution: Use string as third argument in internal ch_log(). (Dominique Pelle, closes #2784)
author Christian Brabandt <cb@256bit.org>
date Thu, 05 Apr 2018 22:45:07 +0200
parents 77a3dc1b1fab
children 01965f9ccc7a
files src/evalfunc.c src/testdir/test_channel.vim src/version.c
diffstat 3 files changed, 16 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -1993,7 +1993,7 @@ f_ch_log(typval_T *argvars, typval_T *re
     if (argvars[1].v_type != VAR_UNKNOWN)
 	channel = get_channel_arg(&argvars[1], FALSE, FALSE, 0);
 
-    ch_log(channel, (char *)msg);
+    ch_log(channel, "%s", msg);
 }
 
 /*
@@ -12927,7 +12927,7 @@ get_callback(typval_T *arg, partial_T **
 }
 
 /*
- * Unref/free "callback" and "partial" retured by get_callback().
+ * Unref/free "callback" and "partial" returned by get_callback().
  */
     void
 free_callback(char_u *callback, partial_T *partial)
--- a/src/testdir/test_channel.vim
+++ b/src/testdir/test_channel.vim
@@ -1823,3 +1823,15 @@ func Test_list_args()
   call s:test_list_args('print("hello\"world\"")', 'hello"world"', 1)
   call s:test_list_args('print("hello\tworld")', "hello\tworld", 1)
 endfunc
+
+" Do this last, it stops any channel log.
+func Test_zz_ch_log()
+  call ch_logfile('Xlog', 'w')
+  call ch_log('hello there')
+  call ch_log('%s%s')
+  call ch_logfile('')
+  let text = readfile('Xlog')
+  call assert_match("hello there", text[1])
+  call assert_match("%s%s", text[2])
+  call delete('Xlog')
+endfunc
--- a/src/version.c
+++ b/src/version.c
@@ -763,6 +763,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1666,
+/**/
     1665,
 /**/
     1664,