diff options
author | Bastien Nocera <hadess@users.sourceforge.net> | 2003-02-05 21:20:10 +0000 |
---|---|---|
committer | Bastien Nocera <hadess@users.sourceforge.net> | 2003-02-05 21:20:10 +0000 |
commit | bfdb14f12c4fa5d9d2dea6db667999212ce09b02 (patch) | |
tree | 51902296fa58dd09a82161704b38e76d1f38aeae | |
parent | bb6e08b5e8af390904643e3890d1bc996c0f2e27 (diff) | |
download | xine-lib-bfdb14f12c4fa5d9d2dea6db667999212ce09b02.tar.gz xine-lib-bfdb14f12c4fa5d9d2dea6db667999212ce09b02.tar.bz2 |
- fix segfault with some OpenDivX streams (thanks Miguel for spotting my
stupid mistakes)
CVS patchset: 4108
CVS date: 2003/02/05 21:20:10
-rw-r--r-- | src/video_out/video_out_none.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/video_out/video_out_none.c b/src/video_out/video_out_none.c index b8295d4f8..dca3b8a6c 100644 --- a/src/video_out/video_out_none.c +++ b/src/video_out/video_out_none.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: video_out_none.c,v 1.8 2003/01/11 10:49:47 f1rmb Exp $ + * $Id: video_out_none.c,v 1.9 2003/02/05 21:20:10 hadess Exp $ * * Was originally part of toxine frontend. * ...but has now been adapted to xine coding style standards ;) @@ -66,9 +66,15 @@ static void free_framedata(none_frame_t* frame) { free(frame->vo_frame.base[0]); frame->vo_frame.base[0] = NULL; } - - frame->vo_frame.base[1] = NULL; - frame->vo_frame.base[2] = NULL; + + if(frame->vo_frame.base[1]) { + free(frame->vo_frame.base[1]); + frame->vo_frame.base[1] = NULL; + } + if(frame->vo_frame.base[2]) { + free(frame->vo_frame.base[2]); + frame->vo_frame.base[2] = NULL; + } } static void none_frame_dispose(vo_frame_t *vo_frame) { @@ -127,14 +133,14 @@ static void none_update_frame_format(vo_driver_t *vo_driver, vo_frame_t *vo_fram frame->vo_frame.pitches[0] = 8*((width + 7) / 8); frame->vo_frame.pitches[1] = 8*((width + 15) / 16); frame->vo_frame.pitches[2] = 8*((width + 15) / 16); - frame->vo_frame.base[0] = malloc(frame_size * 3/2); - frame->vo_frame.base[2] = frame->vo_frame.base[0]+frame_size; - frame->vo_frame.base[1] = frame->vo_frame.base[0]+frame_size*5/4; + frame->vo_frame.base[0] = malloc(frame->vo_frame.pitches[0] * height); + frame->vo_frame.base[1] = malloc(frame->vo_frame.pitches[1] * ((height+1)/2)); + frame->vo_frame.base[2] = malloc(frame->vo_frame.pitches[2] * ((height+1)/2)); break; case XINE_IMGFMT_YUY2: frame->vo_frame.pitches[0] = 8*((width + 3) / 4); - frame->vo_frame.base[0] = malloc((frame_size * 2)); + frame->vo_frame.base[0] = malloc(frame->vo_frame.pitches[0] * height); frame->vo_frame.base[1] = NULL; frame->vo_frame.base[2] = NULL; break; |