changeset 4411:1afdb7d21c14 v7.3.954

updated for version 7.3.954 Problem: No check if PyObject_IsTrue fails. Solution: Add a check for -1 value. (ZyX)
author Bram Moolenaar <bram@vim.org>
date Wed, 15 May 2013 16:11:50 +0200
parents dc9e62f8cbb5
children 13c2f09befbd
files src/if_py_both.h src/version.c
diffstat 2 files changed, 14 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/if_py_both.h
+++ b/src/if_py_both.h
@@ -700,7 +700,10 @@ DictionarySetattr(PyObject *self, char *
 	}
 	else
 	{
-	    if (PyObject_IsTrue(val))
+	    int		istrue = PyObject_IsTrue(val);
+	    if (istrue == -1)
+		return -1;
+	    else if (istrue)
 		this->dict->dv_lock = VAR_LOCKED;
 	    else
 		this->dict->dv_lock = 0;
@@ -1201,7 +1204,10 @@ ListSetattr(PyObject *self, char *name, 
 	}
 	else
 	{
-	    if (PyObject_IsTrue(val))
+	    int		istrue = PyObject_IsTrue(val);
+	    if (istrue == -1)
+		return -1;
+	    else if (istrue)
 		this->list->lv_lock = VAR_LOCKED;
 	    else
 		this->list->lv_lock = 0;
@@ -1479,7 +1485,10 @@ OptionsAssItem(OptionsObject *this, PyOb
 
     if (flags & SOPT_BOOL)
     {
-	r = set_option_value_for(key, PyObject_IsTrue(valObject), NULL,
+	int	istrue = PyObject_IsTrue(valObject);
+	if (istrue == -1)
+	    return -1;
+	r = set_option_value_for(key, istrue, NULL,
 				opt_flags, this->opt_type, this->from);
     }
     else if (flags & SOPT_NUM)
--- a/src/version.c
+++ b/src/version.c
@@ -729,6 +729,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    954,
+/**/
     953,
 /**/
     952,