diff options
author | Bram Moolenaar <Bram@vim.org> | 2019-12-31 21:59:01 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2019-12-31 21:59:01 +0100 |
commit | 556684ff71e044a642879d759373a7ebc5047fad (patch) | |
tree | 693aba1258b64d3bebd7754324363067352e90a3 | |
parent | ef140544f6703a7a4c0f6a15f610508ed6b09e89 (diff) | |
download | vim-git-556684ff71e044a642879d759373a7ebc5047fad.tar.gz |
patch 8.2.0068: crash when using Python 3 with "utf32" encodingv8.2.0068
Problem: Crash when using Python 3 with "utf32" encoding. (Dominique Pelle)
Solution: Use "utf-8" whenever enc_utf8 is set. (closes #5423)
-rw-r--r-- | src/if_py_both.h | 2 | ||||
-rw-r--r-- | src/testdir/test_python3.vim | 7 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 10 insertions, 1 deletions
diff --git a/src/if_py_both.h b/src/if_py_both.h index 0763c65b3..bdac3fc3e 100644 --- a/src/if_py_both.h +++ b/src/if_py_both.h @@ -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_"; diff --git a/src/testdir/test_python3.vim b/src/testdir/test_python3.vim index 285330280..397299e11 100644 --- 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 diff --git a/src/version.c b/src/version.c index 432ae4d92..1c7dbba77 100644 --- 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, |