patch 8.2.3850: illegal memory access when displaying a partial

Problem:    Illegal memory access when displaying a partial.
Solution:   Terminate the string with a NUL. (closes #9371)
diff --git a/src/eval.c b/src/eval.c
index ecc242d..d0ad7c6 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -5087,7 +5087,8 @@
 		    ga_concat(&ga, tv2string(&dtv, &tf, numbuf, copyID));
 		    vim_free(tf);
 		}
-		ga_concat(&ga, (char_u *)")");
+		// terminate with ')' and a NUL
+		ga_concat_len(&ga, (char_u *)")", 2);
 
 		*tofree = ga.ga_data;
 		r = *tofree;
diff --git a/src/testdir/test_messages.vim b/src/testdir/test_messages.vim
index 375cb01..5724eb6 100644
--- a/src/testdir/test_messages.vim
+++ b/src/testdir/test_messages.vim
@@ -337,4 +337,11 @@
   call delete('Xtest_quit_message')
 endfunc
 
+" this was missing a terminating NUL
+func Test_echo_string_partial()
+  function CountSpaces()
+  endfunction
+  echomsg function('CountSpaces', [#{aaaaaaaaaaa: v:false, bbbbbbbbbbbb: '', ccccccccccc: ['ab', 'cd']}])
+endfunc
+
 " vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index 372b760..5272a5b 100644
--- a/src/version.c
+++ b/src/version.c
@@ -750,6 +750,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3850,
+/**/
     3849,
 /**/
     3848,