diff src/if_py_both.h @ 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 fd6ef931aa77
children 3e22fe67fa69
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;