Skip to content

Commit

Permalink
Merge pull request #6329 from nulano/imagetk-leak
Browse files Browse the repository at this point in the history
Inline fname2char to fix memory leak
  • Loading branch information
hugovk committed Oct 29, 2022
2 parents 966e98f + 09da6fa commit 327db9a
Showing 1 changed file with 8 additions and 13 deletions.
21 changes: 8 additions & 13 deletions src/Tk/tkImaging.c
Expand Up @@ -364,17 +364,6 @@ load_tkinter_funcs(void) {
* tkinter dynamic library (module).
*/

/* From module __file__ attribute to char *string for dlopen. */
char *
fname2char(PyObject *fname) {
PyObject *bytes;
bytes = PyUnicode_EncodeFSDefault(fname);
if (bytes == NULL) {
return NULL;
}
return PyBytes_AsString(bytes);
}

#include <dlfcn.h>

void *
Expand Down Expand Up @@ -442,7 +431,7 @@ load_tkinter_funcs(void) {
int ret = -1;
void *main_program, *tkinter_lib;
char *tkinter_libname;
PyObject *pModule = NULL, *pString = NULL;
PyObject *pModule = NULL, *pString = NULL, *pBytes = NULL;

/* Try loading from the main program namespace first */
main_program = dlopen(NULL, RTLD_LAZY);
Expand All @@ -462,7 +451,12 @@ load_tkinter_funcs(void) {
if (pString == NULL) {
goto exit;
}
tkinter_libname = fname2char(pString);
/* From module __file__ attribute to char *string for dlopen. */
pBytes = PyUnicode_EncodeFSDefault(pString);
if (pBytes == NULL) {
goto exit;
}
tkinter_libname = PyBytes_AsString(pBytes);
if (tkinter_libname == NULL) {
goto exit;
}
Expand All @@ -478,6 +472,7 @@ load_tkinter_funcs(void) {
dlclose(main_program);
Py_XDECREF(pModule);
Py_XDECREF(pString);
Py_XDECREF(pBytes);
return ret;
}
#endif /* end not Windows */

0 comments on commit 327db9a

Please sign in to comment.