Marc-Andre Lemburg:
Fixed a memory leak found by Fredrik Lundh. Instead of
PyUnicode_AsUTF8String() we now use _PyUnicode_AsUTF8String() which
returns the string object without incremented refcount (and assures
that the so obtained object remains alive until the Unicode object is
garbage collected).
diff --git a/Python/getargs.c b/Python/getargs.c
index 91fe267..1e88a88 100644
--- a/Python/getargs.c
+++ b/Python/getargs.c
@@ -444,6 +444,11 @@
}
+/* Internal API needed by convertsimple1(): */
+extern
+PyObject *_PyUnicode_AsUTF8String(PyObject *unicode,
+ const char *errors);
+
/* Convert a non-tuple argument. Return NULL if conversion went OK,
or a string representing the expected type if the conversion failed.
When failing, an exception may or may not have been raised.
@@ -589,7 +594,7 @@
if (PyString_Check(arg))
*p = PyString_AS_STRING(arg);
else if (PyUnicode_Check(arg)) {
- arg = PyUnicode_AsUTF8String(arg);
+ arg = _PyUnicode_AsUTF8String(arg, NULL);
if (arg == NULL)
return "unicode conversion error";
*p = PyString_AS_STRING(arg);
@@ -634,7 +639,7 @@
else if (PyString_Check(arg))
*p = PyString_AsString(arg);
else if (PyUnicode_Check(arg)) {
- arg = PyUnicode_AsUTF8String(arg);
+ arg = _PyUnicode_AsUTF8String(arg, NULL);
if (arg == NULL)
return "unicode conversion error";
*p = PyString_AS_STRING(arg);