From: Serhiy Storchaka Date: Thu, 11 Jul 2013 16:19:47 +0000 (+0300) Subject: Fix reference leaks introduced by the patch for issue #5308. X-Git-Tag: v3.4.0a1~262 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a155d40ed50b7bf77338a80ad1793cb1ea8538bc;p=python Fix reference leaks introduced by the patch for issue #5308. --- a155d40ed50b7bf77338a80ad1793cb1ea8538bc diff --cc Python/marshal.c index e97de59791,23764ccb7e..a45e148ff9 --- a/Python/marshal.c +++ b/Python/marshal.c @@@ -383,10 -319,8 +390,8 @@@ w_complex_object(PyObject *v, char flag } } else if (PyBytes_CheckExact(v)) { - w_byte(TYPE_STRING, p); + W_TYPE(TYPE_STRING, p); - n = PyBytes_GET_SIZE(v); - W_SIZE(n, p); - w_string(PyBytes_AS_STRING(v), n, p); + w_pstring(PyBytes_AS_STRING(v), PyBytes_GET_SIZE(v), p); } else if (PyUnicode_CheckExact(v)) { PyObject *utf8; @@@ -396,13 -330,8 +401,11 @@@ p->error = WFERR_UNMARSHALLABLE; return; } - w_byte(TYPE_UNICODE, p); + if (p->version >= 3 && PyUnicode_CHECK_INTERNED(v)) + W_TYPE(TYPE_INTERNED, p); + else + W_TYPE(TYPE_UNICODE, p); - n = PyBytes_GET_SIZE(utf8); - W_SIZE(n, p); - w_string(PyBytes_AS_STRING(utf8), n, p); + w_pstring(PyBytes_AS_STRING(utf8), PyBytes_GET_SIZE(utf8), p); Py_DECREF(utf8); } else if (PyTuple_CheckExact(v)) { @@@ -493,11 -421,8 +495,8 @@@ p->error = WFERR_UNMARSHALLABLE; return; } - w_byte(TYPE_STRING, p); + W_TYPE(TYPE_STRING, p); - n = view.len; - s = view.buf; - W_SIZE(n, p); - w_string(s, n, p); + w_pstring(view.buf, view.len, p); PyBuffer_Release(&view); } else {