diff options
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/python/python.c | 5 |
2 files changed, 10 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index c5b7325..8627cb7 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,11 @@ 2016-05-03 Pedro Alves <palves@redhat.com> + PR python/20037 + * python/python.c (_initialize_python) [IS_PY3K]: xstrdup/xfree + oldloc. + +2016-05-03 Pedro Alves <palves@redhat.com> + * python/python.c (_initialize_python) [IS_PY3K]: Remove dead code. diff --git a/gdb/python/python.c b/gdb/python/python.c index ea9cf85..c706644 100644 --- a/gdb/python/python.c +++ b/gdb/python/python.c @@ -1708,22 +1708,25 @@ message == an error message without a stack will be printed."), progname = concat (ldirname (python_libdir), SLASH_STRING, "bin", SLASH_STRING, "python", (char *) NULL); #ifdef IS_PY3K - oldloc = setlocale (LC_ALL, NULL); + oldloc = xstrdup (setlocale (LC_ALL, NULL)); setlocale (LC_ALL, ""); progsize = strlen (progname); progname_copy = (wchar_t *) PyMem_Malloc ((progsize + 1) * sizeof (wchar_t)); if (!progname_copy) { + xfree (oldloc); fprintf (stderr, "out of memory\n"); return; } count = mbstowcs (progname_copy, progname, progsize + 1); if (count == (size_t) -1) { + xfree (oldloc); fprintf (stderr, "Could not convert python path to string\n"); return; } setlocale (LC_ALL, oldloc); + xfree (oldloc); /* Note that Py_SetProgramName expects the string it is passed to remain alive for the duration of the program's execution, so |