X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fflash.c;h=7c733979c0eebbbd8bc3ca78f90e6f60468f0e88;hb=0422bd4ca0113cbd99a44674ad14e7da08f3d1f1;hp=627b101ae4c736e85eb529dfd55e25d622cb5943;hpb=caacc3b7bc77a04e35891f73908f9c0a7c8c64fa;p=swftools.git diff --git a/src/flash.c b/src/flash.c index 627b101..7c73397 100644 --- a/src/flash.c +++ b/src/flash.c @@ -89,6 +89,7 @@ struct GRADIENT readGRADIENT(struct reader_t*r, int shape) else gradient.rgba[t] = readRGBA(r); } + return gradient; } struct RECT readRECT(struct reader_t*reader) @@ -325,6 +326,7 @@ void placeobject_write (struct PlaceObject*obj, struct writer_t*w) u16 taghead = 0x3f | TAGID_PLACEOBJECT<<6; u8*pos; u8*lenpos; + U32 len; writer_resetbits(w); writer_write(w, &taghead, 2); lenpos = writer_getpos(w); @@ -343,8 +345,12 @@ void placeobject_write (struct PlaceObject*obj, struct writer_t*w) CXFORM_write(&obj->cxform, w); } writer_resetbits(w); - - *(u32*)lenpos = SWAP32((u8*)writer_getpos(w) - pos); + + len = (u8*)writer_getpos(w) - pos; + lenpos[0] = len; + lenpos[1] = len>>8; + lenpos[2] = len>>16; + lenpos[3] = len>>24; } void placeobject2_init (struct PlaceObject2*obj,struct swf_tag*tag) @@ -392,6 +398,7 @@ void placeobject2_write (struct PlaceObject2*obj, struct writer_t*w) u16 taghead = SWAP16(0x3f | TAGID_PLACEOBJECT2<<6); u8*pos; u8*lenpos; + U32 len; writer_resetbits(w); writer_write(w, &taghead, 2); lenpos = writer_getpos(w); @@ -416,7 +423,12 @@ void placeobject2_write (struct PlaceObject2*obj, struct writer_t*w) if(obj->hasclipactions) writer_writeu16(w, obj->clipactions); writer_resetbits(w); - *(u32*)lenpos = SWAP32((u8*)writer_getpos(w) - pos); + + len = (u8*)writer_getpos(w) - pos; + lenpos[0] = len; + lenpos[1] = len>>8; + lenpos[2] = len>>16; + lenpos[3] = len>>24; } void read_swf(struct swffile*swf, uchar*data, int length) @@ -514,19 +526,20 @@ int getidfromtag(struct swf_tag* tag) } break; case TAGID_REMOVEOBJECT: - return *(u16*)tag->data; + return tag->data[0]+tag->data[1]*256; break; case TAGID_REMOVEOBJECT2: return -1; break; } - return *(u16*)tag->data; + return tag->data[0]+tag->data[1]*256; } void setidintag(struct swf_tag* tag, int id) { - *(u16*)tag->data = SWAP16(id); + tag->data[0] = id; + tag->data[1] = id>>8; } char is_sprite_tag (int id)