diff options
author | Julian Scheel <julian@jusst.de> | 2009-01-12 11:54:41 +0000 |
---|---|---|
committer | Julian Scheel <julian@jusst.de> | 2009-01-12 11:54:41 +0000 |
commit | d24d9d256f20e7aadf30aca14d017c300caa0981 (patch) | |
tree | bc54ba806e2efe02ce4de9672ad0ad5c064b6ce1 /src/libvdpau/dpb.c | |
parent | a1ff25f8d2cf49ab7dc694968980d1ce9e00c999 (diff) | |
download | xine-lib-d24d9d256f20e7aadf30aca14d017c300caa0981.tar.gz xine-lib-d24d9d256f20e7aadf30aca14d017c300caa0981.tar.bz2 |
Fix a possible crash.
Diffstat (limited to 'src/libvdpau/dpb.c')
-rw-r--r-- | src/libvdpau/dpb.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/libvdpau/dpb.c b/src/libvdpau/dpb.c index f83a5d2da..cd3c6ef9a 100644 --- a/src/libvdpau/dpb.c +++ b/src/libvdpau/dpb.c @@ -260,7 +260,7 @@ int dpb_remove_picture_by_picnum(struct dpb *dpb, uint32_t picnum) int dpb_add_picture(struct dpb *dpb, struct decoded_picture *pic, uint32_t num_ref_frames) { int i = 0; - struct decoded_picture *last_pic; + struct decoded_picture *last_pic = dpb->pictures; pic->next = dpb->pictures; dpb->pictures = pic; @@ -273,10 +273,15 @@ int dpb_add_picture(struct dpb *dpb, struct decoded_picture *pic, uint32_t num_r i++; if(i>num_ref_frames) { pic->used_for_reference = 0; + if(pic == dpb->pictures) + last_pic = pic->next; + if(!pic->delayed_output) { dpb_remove_picture(dpb, pic); } pic = last_pic; + if(pic == dpb->pictures) + continue; } last_pic = pic; } |