diff --git a/src/message.c b/src/message.c
index b4d7b65..513f288 100644
--- a/src/message.c
+++ b/src/message.c
@@ -3887,7 +3887,7 @@
 static char *e_printf = N_("E766: Insufficient arguments for printf()");
 
 static varnumber_T tv_nr(typval_T *tvs, int *idxp);
-static char *tv_str(typval_T *tvs, int *idxp);
+static char *tv_str(typval_T *tvs, int *idxp, char_u **tofree);
 # ifdef FEAT_FLOAT
 static double tv_float(typval_T *tvs, int *idxp);
 # endif
@@ -3916,20 +3916,28 @@
 
 /*
  * Get string argument from "idxp" entry in "tvs".  First entry is 1.
+ * If "tofree" is NULL get_tv_string_chk() is used.  Some types (e.g. List)
+ * are not converted to a string.
+ * If "tofree" is not NULL echo_string() is used.  All types are converted to
+ * a string with the same format as ":echo".  The caller must free "*tofree".
  * Returns NULL for an error.
  */
     static char *
-tv_str(typval_T *tvs, int *idxp)
+tv_str(typval_T *tvs, int *idxp, char_u **tofree)
 {
-    int		idx = *idxp - 1;
-    char	*s = NULL;
+    int		    idx = *idxp - 1;
+    char	    *s = NULL;
+    static char_u   numbuf[NUMBUFLEN];
 
     if (tvs[idx].v_type == VAR_UNKNOWN)
 	EMSG(_(e_printf));
     else
     {
 	++*idxp;
-	s = (char *)get_tv_string_chk(&tvs[idx]);
+	if (tofree != NULL)
+	    s = (char *)echo_string(&tvs[idx], tofree, numbuf, get_copyID());
+	else
+	    s = (char *)get_tv_string_chk(&tvs[idx]);
     }
     return s;
 }
@@ -4113,6 +4121,10 @@
 	    /* current conversion specifier character */
 	    char    fmt_spec = '\0';
 
+	    /* buffer for 's' and 'S' specs */
+	    char_u  *tofree = NULL;
+
+
 	    str_arg = NULL;
 	    p++;  /* skip '%' */
 
@@ -4276,7 +4288,7 @@
 		case 'S':
 		    str_arg =
 # if defined(FEAT_EVAL)
-				tvs != NULL ? tv_str(tvs, &arg_idx) :
+				tvs != NULL ? tv_str(tvs, &arg_idx, &tofree) :
 # endif
 				    va_arg(ap, char *);
 		    if (str_arg == NULL)
@@ -4367,7 +4379,8 @@
 			length_modifier = '\0';
 			ptr_arg =
 # if defined(FEAT_EVAL)
-				 tvs != NULL ? (void *)tv_str(tvs, &arg_idx) :
+				 tvs != NULL ? (void *)tv_str(tvs, &arg_idx,
+									NULL) :
 # endif
 					va_arg(ap, void *);
 			if (ptr_arg != NULL)
@@ -4877,6 +4890,7 @@
 		    str_l += pn;
 		}
 	    }
+	    vim_free(tofree);
 	}
     }
 
