Mark Hammond avatar Mark Hammond committed 35ccfc1

Fix [ 776721 ] locale.setlocale() leaks
Our saved locale was not being freed. Also check correct variable for
NULL.

Comments (0)

Files changed (1)

Modules/_localemodule.c

             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) {
                 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");
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.