mirror of
https://code.videolan.org/videolan/vlc
synced 2024-09-04 09:11:33 +02:00
XCB-XV: fix memleak when port grabbing fails
This commit is contained in:
parent
8b65aa8a59
commit
7b7a390bfc
@ -335,7 +335,7 @@ static int Open (vlc_object_t *obj)
|
||||
|
||||
xcb_xv_adaptor_info_iterator_t it;
|
||||
for (it = xcb_xv_query_adaptors_info_iterator (adaptors);
|
||||
it.rem > 0;
|
||||
it.rem > 0 && !found_adaptor;
|
||||
xcb_xv_adaptor_info_next (&it))
|
||||
{
|
||||
const xcb_xv_adaptor_info_t *a = it.data;
|
||||
@ -380,10 +380,7 @@ static int Open (vlc_object_t *obj)
|
||||
}
|
||||
|
||||
if (xfmt == NULL) /* No acceptable image formats */
|
||||
{
|
||||
free (r);
|
||||
continue;
|
||||
}
|
||||
goto skip_adaptor;
|
||||
|
||||
/* Grab a port */
|
||||
for (unsigned i = 0; i < a->num_ports; i++)
|
||||
@ -398,13 +395,15 @@ static int Open (vlc_object_t *obj)
|
||||
if (result == 0)
|
||||
{
|
||||
p_sys->port = port;
|
||||
goto grabbed_port;
|
||||
found_adaptor = true;
|
||||
break;
|
||||
}
|
||||
msg_Dbg (vd, "cannot grab port %"PRIu32, port);
|
||||
}
|
||||
continue;
|
||||
if (!found_adaptor)
|
||||
goto skip_adaptor;
|
||||
|
||||
grabbed_port:
|
||||
/* Found port - initialize selected format */
|
||||
name = strndup (xcb_xv_adaptor_info_name (a), a->name_size);
|
||||
if (name != NULL)
|
||||
{
|
||||
@ -422,9 +421,9 @@ static int Open (vlc_object_t *obj)
|
||||
fmt.i_gmask = xfmt->green_mask;
|
||||
fmt.i_bmask = xfmt->blue_mask;
|
||||
}
|
||||
|
||||
skip_adaptor:
|
||||
free (r);
|
||||
found_adaptor = true;
|
||||
break;
|
||||
}
|
||||
free (adaptors);
|
||||
if (!found_adaptor)
|
||||
|
Loading…
Reference in New Issue
Block a user