diff options
Diffstat (limited to 'Python/pythonrun.c')
| -rw-r--r-- | Python/pythonrun.c | 23 | 
1 files changed, 15 insertions, 8 deletions
| diff --git a/Python/pythonrun.c b/Python/pythonrun.c index 6251e30..faaf54a 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -53,7 +53,7 @@ extern grammar _PyParser_Grammar; /* From graminit.c */  /* Forward */  static void initmain(void); -static void initfsencoding(void); +static int initfsencoding(PyInterpreterState *interp);  static void initsite(void);  static int initstdio(void);  static void flush_io(void); @@ -291,7 +291,8 @@ Py_InitializeEx(int install_sigs)      _PyTime_Init(); -    initfsencoding(); +    if (initfsencoding(interp) < 0) +        Py_FatalError("Py_Initialize: unable to load the file system codec");      if (install_sigs)          initsigs(); /* Signal handling stuff, including initintr() */ @@ -608,6 +609,10 @@ Py_NewInterpreter(void)          Py_DECREF(pstderr);          _PyImportHooks_Init(); + +        if (initfsencoding(interp) < 0) +            goto handle_error; +          if (initstdio() < 0)              Py_FatalError(              "Py_Initialize: can't initialize sys standard streams"); @@ -720,8 +725,8 @@ initmain(void)      }  } -static void -initfsencoding(void) +static int +initfsencoding(PyInterpreterState *interp)  {      PyObject *codec;  #if defined(HAVE_LANGINFO_H) && defined(CODESET) @@ -738,7 +743,8 @@ initfsencoding(void)          Py_FileSystemDefaultEncoding = codeset;          Py_HasFileSystemDefaultEncoding = 0; -        return; +        interp->fscodec_initialized = 1; +        return 0;      }  #endif @@ -748,10 +754,11 @@ initfsencoding(void)          /* Such error can only occurs in critical situations: no more           * memory, import a module of the standard library failed,           * etc. */ -        Py_FatalError("Py_Initialize: unable to load the file system codec"); -    } else { -        Py_DECREF(codec); +        return -1;      } +    Py_DECREF(codec); +    interp->fscodec_initialized = 1; +    return 0;  }  /* Import the site module (not into __main__ though) */ | 
