changeset 19015:a3d9a5e14c1f v8.2.0068

patch 8.2.0068: crash when using Python 3 with "utf32" encoding Commit: https://github.com/vim/vim/commit/556684ff71e044a642879d759373a7ebc5047fad Author: Bram Moolenaar <Bram@vim.org> Date: Tue Dec 31 21:59:01 2019 +0100 patch 8.2.0068: crash when using Python 3 with "utf32" encoding Problem: Crash when using Python 3 with "utf32" encoding. (Dominique Pelle) Solution: Use "utf-8" whenever enc_utf8 is set. (closes https://github.com/vim/vim/issues/5423)
author Bram Moolenaar <Bram@vim.org>
date Tue, 31 Dec 2019 22:00:03 +0100
parents 0ecf33c2ad4b
children 2c87424f5ea1
files src/if_py_both.h src/testdir/test_python3.vim src/version.c
diffstat 3 files changed, 10 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/if_py_both.h
+++ b/src/if_py_both.h
@@ -19,7 +19,7 @@ static char_u e_py_systemexit[]	= "E880:
 typedef int Py_ssize_t;  // Python 2.4 and earlier don't have this type.
 #endif
 
-#define ENC_OPT ((char *)p_enc)
+#define ENC_OPT (enc_utf8 ? "utf-8" : (char *)p_enc)
 #define DOPY_FUNC "_vim_pydo"
 
 static const char *vim_special_path = "_vim_path_";
--- a/src/testdir/test_python3.vim
+++ b/src/testdir/test_python3.vim
@@ -167,3 +167,10 @@ func Test_Catch_Exception_Message()
     call assert_match( '^Vim(.*):RuntimeError: TEST$', v:exception )
   endtry
 endfunc
+
+func Test_unicode()
+  " this crashed Vim once
+  set encoding=utf32
+  py3 print('hello')
+  set encoding=utf8
+endfunc
--- a/src/version.c
+++ b/src/version.c
@@ -743,6 +743,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    68,
+/**/
     67,
 /**/
     66,