[vlc-commits] video_output/xcb: fix memory-leak in ReleaseDrawable
Filip Roséen
git at videolan.org
Fri Sep 23 16:03:29 CEST 2016
vlc | branch: master | Filip Roséen <filip at atch.se> | 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 <thomas at gllm.fr>
> 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");
}
More information about the vlc-commits
mailing list