Kaydet (Commit) c4428c58 authored tarafından Guido van Rossum's avatar Guido van Rossum

Charles G Waldman: Doing a PyObject_New then PyMem_DEL causes havoc if

you are trying to use Py_TRACE_REFS.
üst 7da3cc5d
...@@ -204,7 +204,7 @@ PyPcre_compile(self, args) ...@@ -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) ...@@ -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) ...@@ -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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment