vlc | branch: master | Filip Roséen <[email protected]> | Fri Sep 23 13:52:31 2016 +0200| [66dc09662ae33d44c21a5159885afdcaabb0cbb0] | committer: Thomas Guillem
video_output/xcb: fix memory-leak in ReleaseDrawable The problem with the previous implementation is that "n" will never be equal to 0 at the relevant part of the code (given the unconditional pre-increment a few lines earlier). These changes fixes the issue by freeing the allocated memory if the first element of "used" is NULL (meaning that there are no more entities referred to by it). fixes #17112 fixes #17293 Signed-off-by: Thomas Guillem <[email protected]> > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=66dc09662ae33d44c21a5159885afdcaabb0cbb0 --- modules/video_output/xcb/window.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/modules/video_output/xcb/window.c b/modules/video_output/xcb/window.c index 02c9dd1..0c4f86f 100644 --- a/modules/video_output/xcb/window.c +++ b/modules/video_output/xcb/window.c @@ -538,12 +538,15 @@ static void ReleaseDrawable (vlc_object_t *obj, xcb_window_t window) used[n] = used[n + 1]; while (used[++n]); - if (n == 0) - var_SetAddress (obj->obj.libvlc, "xid-in-use", NULL); + if (!used[0]) + var_SetAddress (obj->obj.libvlc, "xid-in-use", NULL); + else + used = NULL; + vlc_mutex_unlock (&serializer); - if (n == 0) - free (used); + free( used ); + /* Variables are reference-counted... */ var_Destroy (obj->obj.libvlc, "xid-in-use"); } _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
