Mercurial > vim
changeset 3852:0f5ee2629635 v7.3.683
updated for version 7.3.683
Problem: ":python" may crash when vimbindeval() returns None.
Solution: Check for v_string to be NULL. (Yukihiro Nakadaira)
author | Bram Moolenaar <bram@vim.org> |
---|---|
date | Fri, 05 Oct 2012 21:30:07 +0200 |
parents | c3791ff631ea |
children | 0769b84adf93 |
files | src/if_py_both.h src/version.c |
diffstat | 2 files changed, 8 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/if_py_both.h +++ b/src/if_py_both.h @@ -351,7 +351,8 @@ VimToPython(typval_T *our_tv, int depth, if (our_tv->v_type == VAR_STRING) { - result = Py_BuildValue("s", our_tv->vval.v_string); + result = Py_BuildValue("s", our_tv->vval.v_string == NULL + ? "" : (char *)our_tv->vval.v_string); } else if (our_tv->v_type == VAR_NUMBER) { @@ -2751,7 +2752,8 @@ ConvertToPyObject(typval_T *tv) switch (tv->v_type) { case VAR_STRING: - return PyBytes_FromString((char *) tv->vval.v_string); + return PyBytes_FromString(tv->vval.v_string == NULL + ? "" : (char *)tv->vval.v_string); case VAR_NUMBER: return PyLong_FromLong((long) tv->vval.v_number); #ifdef FEAT_FLOAT @@ -2763,7 +2765,8 @@ ConvertToPyObject(typval_T *tv) case VAR_DICT: return DictionaryNew(tv->vval.v_dict); case VAR_FUNC: - return FunctionNew(tv->vval.v_string); + return FunctionNew(tv->vval.v_string == NULL + ? (char_u *)"" : tv->vval.v_string); case VAR_UNKNOWN: Py_INCREF(Py_None); return Py_None;