Fixed unicode() to use the new API PyUnicode_FromEncodedObject().
This adds support for instance to the constructor (instances
have to define __str__ and can return Unicode objects via that
hook; string return values are decoded into Unicode using the
current default encoding).
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index 82867e0..8e2720b 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -155,20 +155,7 @@
 
 	if ( !PyArg_ParseTuple(args, "O|ss:unicode", &v, &encoding, &errors) )
 	    return NULL;
-	/* Special case: Unicode will stay Unicode */
-	if (PyUnicode_Check(v)) {
-	    if (encoding) {
-		PyErr_SetString(PyExc_TypeError,
-		  "unicode() does not support decoding of Unicode objects");
-		return NULL;
-	    }
-	    Py_INCREF(v);
-	    return v;
-	}
-	/* Read raw data and decode it */
-	if (PyObject_AsReadBuffer(v, &buffer, &len))
-	    return NULL;
-	return PyUnicode_Decode((const char *)buffer, len, encoding, errors);
+	return PyUnicode_FromEncodedObject(v, encoding, errors);
 }
 
 static char unicode_doc[] =