From 9a71475e9e2e2532819ccacc8d2a6e53fd01a9d2 Mon Sep 17 00:00:00 2001 From: Mark Hammond Date: Thu, 24 Jul 2003 14:15:07 +0000 Subject: [PATCH] Fix [ 776721 ] locale.setlocale() leaks Our saved locale was not being freed. Also check correct variable for NULL. --- Modules/_localemodule.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Modules/_localemodule.c b/Modules/_localemodule.c index 840f8385f20..263e88179ef 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");