vo_vdpau: add a NULL check, verify image dimensions

read_output_surface() could fail and return NULL.

Also, make sure we don't set the image to a size larger than the
allocated size. Normally this shouldn't happen, but in theory it could
in corner cases; this is for robustness.
This commit is contained in:
wm4 2015-06-06 21:06:54 +02:00
parent 57048c7393
commit fb7d0c80cc
1 changed files with 2 additions and 1 deletions

View File

@ -881,7 +881,8 @@ static struct mp_image *get_window_screenshot(struct vo *vo)
int last_surface = WRAP_ADD(vc->surface_num, -1, vc->num_output_surfaces);
VdpOutputSurface screen = vc->output_surfaces[last_surface];
struct mp_image *image = read_output_surface(vo, screen);
mp_image_set_size(image, vo->dwidth, vo->dheight);
if (image && image->w >= vo->dwidth && image->h >= vo->dheight)
mp_image_set_size(image, vo->dwidth, vo->dheight);
return image;
}