From: kramm Date: Mon, 7 Jan 2002 21:23:55 +0000 (+0000) Subject: bus error/big endian fixes X-Git-Tag: release-0-2-2~58 X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=commitdiff_plain;h=9306fefe043d1517b6a38c6b0d6d08b045a1440e bus error/big endian fixes --- diff --git a/src/bitio.c b/src/bitio.c index 8a494b2..eb7958c 100644 --- a/src/bitio.c +++ b/src/bitio.c @@ -33,12 +33,12 @@ void reader_input1(struct reader_t*r, void*target) } void reader_input2(struct reader_t*r, void*target) { - *(unsigned short int*)target = *(unsigned short int*)&r->data[r->datapos]; + memcpy(target,&r->data[r->datapos],2); r->datapos += 2; } void reader_input4(struct reader_t*r, void*target) { - *(unsigned int*)target = *(unsigned int*)&r->data[r->datapos]; + memcpy(target,&r->data[r->datapos],4); r->datapos += 4; } uchar*reader_getinputpos(struct reader_t*r) diff --git a/src/swfextract.c b/src/swfextract.c index 50a4f75..1e1f204 100644 --- a/src/swfextract.c +++ b/src/swfextract.c @@ -165,13 +165,16 @@ void enumerateIDs(TAG*tag, void(*callback)(void*)) if(tag->len>=64) { len += 6; data = (U8*)malloc(len); - *(U16*)data = (tag->id<<6)+63; - *(U32*)&data[2] = tag->len; + *(U16*)data = SWAP16((tag->id<<6)+63); + *(U8*)&data[2] = tag->len; + *(U8*)&data[3] = tag->len>>8; + *(U8*)&data[4] = tag->len>>16; + *(U8*)&data[5] = tag->len>>24; memcpy(&data[6], tag->data, tag->len); } else { len += 2; data = (U8*)malloc(len); - *(U16*)data = (tag->id<<6)+tag->len; + *(U16*)data = SWAP16((tag->id<<6)+tag->len); memcpy(&data[2], tag->data, tag->len); } map_ids_mem(data, len, callback);