summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin KAY <komadori@users.sourceforge.net>2003-10-05 16:22:19 +0000
committerRobin KAY <komadori@users.sourceforge.net>2003-10-05 16:22:19 +0000
commitc201e69690c056ac496ddcc466fe4ae191b9e449 (patch)
tree0883ada9364f75018a56f565356b7b24188f2a0c
parent5d51cd9807c624cfe1ee665b607e858e005353c9 (diff)
downloadxine-lib-c201e69690c056ac496ddcc466fe4ae191b9e449.tar.gz
xine-lib-c201e69690c056ac496ddcc466fe4ae191b9e449.tar.bz2
The height of the U and V buffers needs to rounded up for odd frame heights. This fixes the heap corruption and malloc(3C) has been switched back to memalign(3C).
CVS patchset: 5449 CVS date: 2003/10/05 16:22:19
-rw-r--r--src/video_out/video_out_pgx64.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/video_out/video_out_pgx64.c b/src/video_out/video_out_pgx64.c
index 60c510be6..eb0a413b8 100644
--- a/src/video_out/video_out_pgx64.c
+++ b/src/video_out/video_out_pgx64.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_pgx64.c,v 1.37 2003/10/04 20:29:26 komadori Exp $
+ * $Id: video_out_pgx64.c,v 1.38 2003/10/05 16:22:19 komadori Exp $
*
* video_out_pgx64.c, Sun PGX64/PGX24 output plugin for xine
*
@@ -353,7 +353,7 @@ static void pgx64_update_frame_format(pgx64_driver_t *this, pgx64_frame_t *frame
frame->vo_frame.pitches[0] = frame->pitch * 2;
frame->lengths[0] = frame->vo_frame.pitches[0] * height;
frame->stripe_lengths[0] = frame->vo_frame.pitches[0] * 16;
- frame->vo_frame.base[0] = (void*)malloc(frame->lengths[0]);
+ frame->vo_frame.base[0] = (void*)memalign(8, frame->lengths[0]);
break;
case XINE_IMGFMT_YV12:
@@ -364,14 +364,14 @@ static void pgx64_update_frame_format(pgx64_driver_t *this, pgx64_frame_t *frame
frame->vo_frame.pitches[1] = frame->pitch / 2;
frame->vo_frame.pitches[2] = frame->pitch / 2;
frame->lengths[0] = frame->vo_frame.pitches[0] * height;
- frame->lengths[1] = frame->vo_frame.pitches[1] * (height / 2);
- frame->lengths[2] = frame->vo_frame.pitches[2] * (height / 2);
+ frame->lengths[1] = frame->vo_frame.pitches[1] * ((height + 1) / 2);
+ frame->lengths[2] = frame->vo_frame.pitches[2] * ((height + 1) / 2);
frame->stripe_lengths[0] = frame->vo_frame.pitches[0] * 16;
frame->stripe_lengths[1] = frame->vo_frame.pitches[1] * 8;
frame->stripe_lengths[2] = frame->vo_frame.pitches[2] * 8;
- frame->vo_frame.base[0] = (void*)malloc(frame->lengths[0]);
- frame->vo_frame.base[1] = (void*)malloc(frame->lengths[1]);
- frame->vo_frame.base[2] = (void*)malloc(frame->lengths[2]);
+ frame->vo_frame.base[0] = (void*)memalign(8, frame->lengths[0]);
+ frame->vo_frame.base[1] = (void*)memalign(8, frame->lengths[1]);
+ frame->vo_frame.base[2] = (void*)memalign(8, frame->lengths[2]);
break;
}
}