mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 11:49:12 +00:00 
			
		
		
		
	Charles G Waldman: Doing a PyObject_New then PyMem_DEL causes havoc if
you are trying to use Py_TRACE_REFS.
This commit is contained in:
		
							parent
							
								
									7da3cc5dfb
								
							
						
					
					
						commit
						c4428c58bb
					
				
					 1 changed files with 3 additions and 3 deletions
				
			
		| 
						 | 
					@ -204,7 +204,7 @@ PyPcre_compile(self, args)
 | 
				
			||||||
				 &error, &erroroffset, dictionary);
 | 
									 &error, &erroroffset, dictionary);
 | 
				
			||||||
	if (rv->regex==NULL) 
 | 
						if (rv->regex==NULL) 
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		PyMem_DEL(rv);
 | 
							Py_DECREF(rv);
 | 
				
			||||||
		if (!PyErr_Occurred())
 | 
							if (!PyErr_Occurred())
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			PyObject *errval = Py_BuildValue("si", error, erroroffset);
 | 
								PyObject *errval = Py_BuildValue("si", error, erroroffset);
 | 
				
			||||||
| 
						 | 
					@ -217,7 +217,7 @@ PyPcre_compile(self, args)
 | 
				
			||||||
	if (rv->regex_extra==NULL && error!=NULL) 
 | 
						if (rv->regex_extra==NULL && error!=NULL) 
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		PyObject *errval = Py_BuildValue("si", error, 0);
 | 
							PyObject *errval = Py_BuildValue("si", error, 0);
 | 
				
			||||||
		PyMem_DEL(rv);
 | 
							Py_DECREF(rv);
 | 
				
			||||||
		PyErr_SetObject(ErrorObject, errval);
 | 
							PyErr_SetObject(ErrorObject, errval);
 | 
				
			||||||
		Py_XDECREF(errval);
 | 
							Py_XDECREF(errval);
 | 
				
			||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
| 
						 | 
					@ -228,7 +228,7 @@ PyPcre_compile(self, args)
 | 
				
			||||||
		PyObject *errval = Py_BuildValue("si", error, rv->num_groups);
 | 
							PyObject *errval = Py_BuildValue("si", error, rv->num_groups);
 | 
				
			||||||
		PyErr_SetObject(ErrorObject, errval);
 | 
							PyErr_SetObject(ErrorObject, errval);
 | 
				
			||||||
		Py_XDECREF(errval);
 | 
							Py_XDECREF(errval);
 | 
				
			||||||
		PyMem_DEL(rv);
 | 
							Py_DECREF(rv);
 | 
				
			||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return (PyObject *)rv;
 | 
						return (PyObject *)rv;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue