git.asbjorn.biz
/
swftools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: don't modify fileSize and frameCount in header when writing it
[swftools.git]
/
src
/
flash.c
diff --git
a/src/flash.c
b/src/flash.c
index
627b101
..
7c73397
100644
(file)
--- 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);
}
else
gradient.rgba[t] = readRGBA(r);
}
+ return gradient;
}
struct RECT readRECT(struct reader_t*reader)
}
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;
u16 taghead = 0x3f | TAGID_PLACEOBJECT<<6;
u8*pos;
u8*lenpos;
+ U32 len;
writer_resetbits(w);
writer_write(w, &taghead, 2);
lenpos = writer_getpos(w);
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);
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)
}
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;
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);
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);
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)
}
void read_swf(struct swffile*swf, uchar*data, int length)
@@
-514,19
+526,20
@@
int getidfromtag(struct swf_tag* tag)
}
break;
case TAGID_REMOVEOBJECT:
}
break;
case TAGID_REMOVEOBJECT:
- return *(u16*)tag->data;
+ return tag->data[0]+tag->data[1]*256;
break;
case TAGID_REMOVEOBJECT2:
return -1;
break;
}
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)
{
}
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)
}
char is_sprite_tag (int id)