From: Mark Hammond Date: Thu, 24 Jul 2003 14:15:07 +0000 (+0000) Subject: Fix [ 776721 ] locale.setlocale() leaks X-Git-Tag: v2.3c2~6 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9a71475e9e2e2532819ccacc8d2a6e53fd01a9d2;p=python Fix [ 776721 ] locale.setlocale() leaks Our saved locale was not being freed. Also check correct variable for NULL. --- diff --git a/Modules/_localemodule.c b/Modules/_localemodule.c index 840f8385f2..263e88179e 100644 --- a/Modules/_localemodule.c +++ b/Modules/_localemodule.c @@ -181,7 +181,7 @@ PyLocale_setlocale(PyObject* self, PyObject* args) return NULL; } result_object = PyString_FromString(result); - if (!result) + if (!result_object) return NULL; /* record changes to LC_NUMERIC */ if (category == LC_NUMERIC || category == LC_ALL) { @@ -199,6 +199,8 @@ PyLocale_setlocale(PyObject* self, PyObject* args) thousands_sep = PyString_FromString(lc->thousands_sep); Py_XDECREF(decimal_point); decimal_point = PyString_FromString(lc->decimal_point); + if (saved_numeric) + free(saved_numeric); saved_numeric = strdup(locale); /* restore to "C" */ setlocale(LC_NUMERIC, "C");