diff options
Diffstat (limited to 'Python/symtable.c')
| -rw-r--r-- | Python/symtable.c | 11 | 
1 files changed, 7 insertions, 4 deletions
diff --git a/Python/symtable.c b/Python/symtable.c index 1871a42..e0b28c9 100644 --- a/Python/symtable.c +++ b/Python/symtable.c @@ -731,7 +731,6 @@ analyze_child_block(PySTEntryObject *entry, PyObject *bound, PyObject *free,  		    PyObject *global, PyObject* child_free)  {  	PyObject *temp_bound = NULL, *temp_global = NULL, *temp_free = NULL; -	int success = 0;  	/* Copy the bound and global dictionaries. @@ -758,13 +757,17 @@ analyze_child_block(PySTEntryObject *entry, PyObject *bound, PyObject *free,  	if (!analyze_block(entry, temp_bound, temp_free, temp_global))  		goto error; -	success = PyDict_Update(child_free, temp_free) >= 0; -	success = 1; +	if (PyDict_Update(child_free, temp_free) < 0) +		goto error; +	Py_DECREF(temp_bound); +	Py_DECREF(temp_free); +	Py_DECREF(temp_global); +	return 1;   error:  	Py_XDECREF(temp_bound);  	Py_XDECREF(temp_free);  	Py_XDECREF(temp_global); -	return success; +	return 0;  }  static int  | 
