]> granicus.if.org Git - python/commitdiff
Fix reference leaks introduced by the patch for issue #5308.
authorSerhiy Storchaka <storchaka@gmail.com>
Thu, 11 Jul 2013 16:19:47 +0000 (19:19 +0300)
committerSerhiy Storchaka <storchaka@gmail.com>
Thu, 11 Jul 2013 16:19:47 +0000 (19:19 +0300)
1  2 
Python/marshal.c

index e97de597916c7cb17798abc0ca4b4c6cbb1b79ab,23764ccb7e2748cb31258222692be73c93d54575..a45e148ff9d80b068cba33819c3ef33f090a53f3
@@@ -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;
              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)) {
              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 {