diff options
author | Campbell Barton <ideasman42@gmail.com> | 2011-12-29 17:12:40 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2011-12-29 17:12:40 +0400 |
commit | 5ed0cd4ad79b3195393a8d88f5b84c0d37a33982 (patch) | |
tree | e7cd6c8ff3e3378a09e89173487a408122581519 /source/blender/render/intern | |
parent | e63cb930ae6ab0fe2f2bfb97abc7b9b1dd19f6a8 (diff) |
possible fix for [#29708] Crashes when Rendering Cross Dissolve + XVID Codec
was calling memcpy with both src and dst args were the same pointer.
Diffstat (limited to 'source/blender/render/intern')
-rw-r--r-- | source/blender/render/intern/source/pipeline.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index 0a481629ee8..7713dcffc5c 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -2968,15 +2968,17 @@ static int do_write_image_or_movie(Render *re, Main *bmain, Scene *scene, bMovie /* write movie or image */ if(BKE_imtype_is_movie(scene->r.im_format.imtype)) { int dofree = 0; + unsigned int *rect32 = (unsigned int *)rres.rect32; /* note; the way it gets 32 bits rects is weak... */ - if(rres.rect32==NULL) { - rres.rect32= MEM_mapallocN(sizeof(int)*rres.rectx*rres.recty, "temp 32 bits rect"); + if(rres.rect32 == NULL) { + rect32 = MEM_mapallocN(sizeof(int)*rres.rectx*rres.recty, "temp 32 bits rect"); + RE_ResultGet32(re, rect32); dofree = 1; } - RE_ResultGet32(re, (unsigned int *)rres.rect32); - ok= mh->append_movie(&re->r, scene->r.cfra, rres.rect32, rres.rectx, rres.recty, re->reports); + + ok= mh->append_movie(&re->r, scene->r.cfra, (int *)rect32, rres.rectx, rres.recty, re->reports); if(dofree) { - MEM_freeN(rres.rect32); + MEM_freeN(rect32); } printf("Append frame %d", scene->r.cfra); } |