From: Benjamin Peterson Date: Thu, 20 Dec 2012 17:55:16 +0000 (-0600) Subject: merge 3.3 (#16597) X-Git-Tag: v3.4.0a1~1809 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4c05969fc41d83e7da9ee3a2e15285a60b68ce23;p=thirdparty%2FPython%2Fcpython.git merge 3.3 (#16597) --- 4c05969fc41d83e7da9ee3a2e15285a60b68ce23 diff --cc Modules/_io/bufferedio.c index 432349a7f637,b077f34fff8c..ea32a5e17352 --- a/Modules/_io/bufferedio.c +++ b/Modules/_io/bufferedio.c @@@ -519,11 -519,22 +519,27 @@@ buffered_close(buffered *self, PyObjec res = PyObject_CallMethodObjArgs(self->raw, _PyIO_str_close, NULL); + if (self->buffer) { + PyMem_Free(self->buffer); + self->buffer = NULL; + } + + if (exc != NULL) { + if (res != NULL) { + Py_CLEAR(res); + PyErr_Restore(exc, val, tb); + } + else { + PyObject *val2; + Py_DECREF(exc); + Py_XDECREF(tb); + PyErr_Fetch(&exc, &val2, &tb); + PyErr_NormalizeException(&exc, &val2, &tb); + PyException_SetContext(val2, val); + PyErr_Restore(exc, val2, tb); + } + } + end: LEAVE_BUFFERED(self) return res;