(original) (raw)

changeset: 84515:df8b40593a08 user: Victor Stinner victor.stinner@gmail.com date: Mon Jul 08 22:29:55 2013 +0200 files: Objects/unicodeobject.c description: Issue #18408: Fix _PyUnicodeWriter_Finish(): clear writer->buffer, so _PyUnicodeWriter_Dealloc() can be called on the writer after finish. diff -r 890496c5a4d6 -r df8b40593a08 Objects/unicodeobject.c --- a/Objects/unicodeobject.c Mon Jul 08 22:28:27 2013 +0200 +++ b/Objects/unicodeobject.c Mon Jul 08 22:29:55 2013 +0200 @@ -13157,6 +13157,7 @@ PyObject * _PyUnicodeWriter_Finish(_PyUnicodeWriter *writer) { + PyObject *str; if (writer->pos == 0) { Py_XDECREF(writer->buffer); _Py_RETURN_UNICODE_EMPTY(); @@ -13174,8 +13175,10 @@ } writer->buffer = newbuffer; } - assert(_PyUnicode_CheckConsistency(writer->buffer, 1)); - return unicode_result_ready(writer->buffer); + str = writer->buffer; + writer->buffer = NULL; + assert(_PyUnicode_CheckConsistency(str, 1)); + return unicode_result_ready(str); } void /victor.stinner@gmail.com