Index: Python/bltinmodule.c =================================================================== --- Python/bltinmodule.c (revision 79036) +++ Python/bltinmodule.c (working copy) @@ -1626,8 +1626,14 @@ Py_DECREF(stdout_encoding); return NULL; } - po = PyUnicode_AsEncodedString(stringpo, - _PyUnicode_AsString(stdout_encoding), NULL); + char *stdout_encoding_str = _PyUnicode_AsString(stdout_encoding); + if (stdout_encoding_str == NULL){ + Py_DECREF(stdout_encoding); + Py_DECREF(stringpo); + Py_DECREF(stdin_encoding); + return NULL; + } + po = PyUnicode_AsEncodedString(stringpo, stdout_encoding_str, NULL); Py_DECREF(stdout_encoding); Py_DECREF(stringpo); if (po == NULL) { Index: Objects/unicodeobject.c =================================================================== --- Objects/unicodeobject.c (revision 79036) +++ Objects/unicodeobject.c (working copy) @@ -1664,6 +1664,11 @@ _PyUnicode_AsStringAndSize(PyObject *unicode, Py_ssize_t *psize) { PyObject *bytes; + if (unicode == Py_None){ + if (psize != NULL) + *psize = strlen(PyUnicode_GetDefaultEncoding()); + return (char *) PyUnicode_GetDefaultEncoding(); + } if (!PyUnicode_Check(unicode)) { PyErr_BadArgument(); return NULL;