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);