From f87289bb58e71f5df73cbd594cbc0c0515e91c4b Mon Sep 17 00:00:00 2001 From: Antoine Pitrou Date: Sat, 30 Jun 2012 23:37:47 +0200 Subject: Issue #15229: An OSError subclass whose __init__ doesn't call back OSError.__init__ could produce incomplete instances, leading to crashes when calling str() on them. --- Objects/exceptions.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'Objects/exceptions.c') diff --git a/Objects/exceptions.c b/Objects/exceptions.c index f706698499..5c85f10444 100644 --- a/Objects/exceptions.c +++ b/Objects/exceptions.c @@ -834,6 +834,7 @@ oserror_init(PyOSErrorObject *self, PyObject **p_args, #endif /* Steals the reference to args */ + Py_CLEAR(self->args); self->args = args; args = NULL; @@ -916,6 +917,11 @@ OSError_new(PyTypeObject *type, PyObject *args, PyObject *kwds) )) goto error; } + else { + self->args = PyTuple_New(0); + if (self->args == NULL) + goto error; + } return (PyObject *) self; -- cgit v1.2.1