]> granicus.if.org Git - python/commitdiff
Patch #804543: strdup saved locales. Backported to 2.3.
authorMartin v. Löwis <martin@v.loewis.de>
Thu, 13 Nov 2003 07:43:21 +0000 (07:43 +0000)
committerMartin v. Löwis <martin@v.loewis.de>
Thu, 13 Nov 2003 07:43:21 +0000 (07:43 +0000)
Modules/readline.c
Python/pythonrun.c

index 5053d1cc71625866b84978ab7e28211a90baaa2f..7535ecf5b976411ac844631a819513a7689b8f51 100644 (file)
@@ -611,7 +611,7 @@ static void
 setup_readline(void)
 {
 #ifdef SAVE_LOCALE
-       char *saved_locale = setlocale(LC_CTYPE, NULL);
+       char *saved_locale = strdup(setlocale(LC_CTYPE, NULL));
 #endif
 
        using_history();
@@ -652,6 +652,7 @@ setup_readline(void)
 
 #ifdef SAVE_LOCALE
        setlocale(LC_CTYPE, saved_locale); /* Restore locale */
+       free(saved_locale);
 #endif
 }
 
index 21c2cace8129bf832cf930bd6d228020ebb598a3..ab6ed58e524654dba45177099ba4dd06c589bb9b 100644 (file)
@@ -235,7 +235,7 @@ Py_Initialize(void)
           initialized by other means. Also set the encoding of
           stdin and stdout if these are terminals.  */
 
-       saved_locale = setlocale(LC_CTYPE, NULL);
+       saved_locale = strdup(setlocale(LC_CTYPE, NULL));
        setlocale(LC_CTYPE, "");
        codeset = nl_langinfo(CODESET);
        if (codeset && *codeset) {
@@ -250,6 +250,7 @@ Py_Initialize(void)
        } else
                codeset = NULL;
        setlocale(LC_CTYPE, saved_locale);
+       free(saved_locale);
 
        if (codeset) {
                sys_stream = PySys_GetObject("stdin");