Index: Python/pythonrun.c =================================================================== --- Python/pythonrun.c (Revision 59091) +++ Python/pythonrun.c (Arbeitskopie) @@ -502,6 +502,12 @@ /* Cleanup Unicode implementation */ _PyUnicode_Fini(); + /* reset file system default encoding */ + if (!Py_HasFileSystemDefaultEncoding) { + free(Py_FileSystemDefaultEncoding); + Py_FileSystemDefaultEncoding = NULL; + } + /* XXX Still allocated: - various static ad-hoc pointers to interned strings - int and float free list blocks Index: Python/bltinmodule.c =================================================================== --- Python/bltinmodule.c (Revision 59091) +++ Python/bltinmodule.c (Arbeitskopie) @@ -16,10 +16,13 @@ */ #if defined(MS_WINDOWS) && defined(HAVE_USABLE_WCHAR_T) const char *Py_FileSystemDefaultEncoding = "mbcs"; +const int Py_HasFileSystemDefaultEncoding = 1; #elif defined(__APPLE__) const char *Py_FileSystemDefaultEncoding = "utf-8"; +const int Py_HasFileSystemDefaultEncoding = 1; #else const char *Py_FileSystemDefaultEncoding = NULL; /* use default */ +const int Py_HasFileSystemDefaultEncoding = 0; #endif static PyObject * Index: Include/fileobject.h =================================================================== --- Include/fileobject.h (Revision 59091) +++ Include/fileobject.h (Arbeitskopie) @@ -20,6 +20,7 @@ If non-NULL, this is different than the default encoding for strings */ PyAPI_DATA(const char *) Py_FileSystemDefaultEncoding; +PyAPI_DATA(const int) Py_HasFileSystemDefaultEncoding; /* Internal API