Fixed bug 5339 - Minor memory leak in SDL_x11events.c
wcodelyokoyt
The atom name that X11_GetAtomName() returns never gets freed, which result in a minor memory leak (14 bytes?) every time the user drops a file on a window.
You can see the line in question here:
6b6170caf6/src/video/x11/SDL_x11events.c (L1350)
Fix: call XFree on name after the while loop.
parent
723d76c8ec
commit
1ef45c1801
|
@ -1378,19 +1378,22 @@ X11_DispatchEvent(_THIS)
|
||||||
X11_ReadProperty(&p, display, data->xwindow, videodata->PRIMARY);
|
X11_ReadProperty(&p, display, data->xwindow, videodata->PRIMARY);
|
||||||
|
|
||||||
if (p.format == 8) {
|
if (p.format == 8) {
|
||||||
char* saveptr = NULL;
|
char *saveptr = NULL;
|
||||||
char* name = X11_XGetAtomName(display, target);
|
char *name = X11_XGetAtomName(display, target);
|
||||||
char *token = SDL_strtokr((char *) p.data, "\r\n", &saveptr);
|
if (name) {
|
||||||
while (token != NULL) {
|
char *token = SDL_strtokr((char *) p.data, "\r\n", &saveptr);
|
||||||
if (SDL_strcmp("text/plain", name)==0) {
|
while (token != NULL) {
|
||||||
SDL_SendDropText(data->window, token);
|
if (SDL_strcmp("text/plain", name) == 0) {
|
||||||
} else if (SDL_strcmp("text/uri-list", name)==0) {
|
SDL_SendDropText(data->window, token);
|
||||||
char *fn = X11_URIToLocal(token);
|
} else if (SDL_strcmp("text/uri-list", name) == 0) {
|
||||||
if (fn) {
|
char *fn = X11_URIToLocal(token);
|
||||||
SDL_SendDropFile(data->window, fn);
|
if (fn) {
|
||||||
|
SDL_SendDropFile(data->window, fn);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
token = SDL_strtokr(NULL, "\r\n", &saveptr);
|
||||||
}
|
}
|
||||||
token = SDL_strtokr(NULL, "\r\n", &saveptr);
|
X11_XFree(name);
|
||||||
}
|
}
|
||||||
SDL_SendDropComplete(data->window);
|
SDL_SendDropComplete(data->window);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue