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;
--- a/src/version.c
+++ b/src/version.c
@@ -720,6 +720,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    683,
+/**/
     682,
 /**/
     681,