From 4466cccb28955a0d145a5ef1534d56109497e40b Mon Sep 17 00:00:00 2001 From: kramm Date: Sun, 6 Apr 2003 20:49:54 +0000 Subject: [PATCH] fix for the strange flash player bug --- lib/modules/swfbits.c | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/lib/modules/swfbits.c b/lib/modules/swfbits.c index b301532..a1110e3 100644 --- a/lib/modules/swfbits.c +++ b/lib/modules/swfbits.c @@ -300,24 +300,11 @@ int swf_SetLosslessBits(TAG * t,U16 width,U16 height,void * bitmap,U8 bitmap_fla fprintf(stderr, "rfxswf: unknown bitmap type %d\n", bitmap_flags); return -1; } - + swf_SetU8(t,bitmap_flags); swf_SetU16(t,width); swf_SetU16(t,height); - - /* fix for buggy flash players which can't handle plain-color bitmaps - TODO: is there a better solution? - */ - { int s; - int l=32; - for(s=0;sl) - break; - } - } - { z_stream zs; memset(&zs,0x00,sizeof(z_stream)); @@ -333,6 +320,17 @@ int swf_SetLosslessBits(TAG * t,U16 width,U16 height,void * bitmap,U8 bitmap_fla } else res = -3; // zlib error } + + while(t->len < 64) { /* actually, 63 and above is o.k., but let's stay on the safe side */ + + /* Flash players up to MX crash or do strange things if they encounter a + DefineLossless Tag with a payload of less than 63 bytes. They also + substitute the whole bitmap by a red rectangle. + + This loop fills up the tag with zeroes so that this doesn't happen. + */ + swf_SetU8(t, 0); + } return res; } -- 1.7.10.4