diff --git a/platform/linuxbsd/x11/display_server_x11.cpp b/platform/linuxbsd/x11/display_server_x11.cpp index 6c43ad887d6..59e6964c464 100644 --- a/platform/linuxbsd/x11/display_server_x11.cpp +++ b/platform/linuxbsd/x11/display_server_x11.cpp @@ -5961,9 +5961,10 @@ Window find_window_from_process_id_internal(Display *p_display, pid_t p_process_ } for (unsigned int i = 0; i < num_children; i++) { - pid_t pid = get_window_pid(p_display, children[i]); - if (pid == p_process_id) { - return children[i]; + const Window child = children[i]; + if (get_window_pid(p_display, child) == p_process_id) { + XFree(children); + return child; } } @@ -5971,6 +5972,7 @@ Window find_window_from_process_id_internal(Display *p_display, pid_t p_process_ for (unsigned int i = 0; i < num_children; i++) { Window wnd = find_window_from_process_id_internal(p_display, p_process_id, children[i]); if (wnd != 0) { + XFree(children); return wnd; } }