]> granicus.if.org Git - vim/commitdiff
patch 8.2.0068: crash when using Python 3 with "utf32" encoding v8.2.0068
authorBram Moolenaar <Bram@vim.org>
Tue, 31 Dec 2019 20:59:01 +0000 (21:59 +0100)
committerBram Moolenaar <Bram@vim.org>
Tue, 31 Dec 2019 20:59:01 +0000 (21:59 +0100)
Problem:    Crash when using Python 3 with "utf32" encoding. (Dominique Pelle)
Solution:   Use "utf-8" whenever enc_utf8 is set. (closes #5423)

src/if_py_both.h
src/testdir/test_python3.vim
src/version.c

index 0763c65b3774c28c481c0f1297e45f8057cbf8a3..bdac3fc3e467fc21460e2191ccbea58b088edbcd 100644 (file)
@@ -19,7 +19,7 @@ static char_u e_py_systemexit[]       = "E880: Can't handle SystemExit of %s exception
 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_";
index 28533028056a652c01048b13855e13ca6b01f9fe..397299e1142526932df3b07d58ccbd88712b18e8 100644 (file)
@@ -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
index 432ae4d9225ea39d95c8a0a809b7f7f936b3d963..1c7dbba77a42fea70907cd055c7faa68e2836d41 100644 (file)
@@ -742,6 +742,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    68,
 /**/
     67,
 /**/