From 217beb47226923c93e774783a1b77856688411b2 Mon Sep 17 00:00:00 2001
From: kramm <kramm>
Date: Wed, 9 Jan 2002 11:42:19 +0000
Subject: [PATCH] bus error fixes

---
 src/flash.c |   24 ++++++++++++++++++------
 1 file changed, 18 insertions(+), 6 deletions(-)

diff --git a/src/flash.c b/src/flash.c
index 3d1006c..914f985 100644
--- a/src/flash.c
+++ b/src/flash.c
@@ -325,6 +325,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 +344,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 +397,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 +422,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 +525,20 @@ int getidfromtag(struct swf_tag* tag)
 	}
 	break;
 	case TAGID_REMOVEOBJECT:
-	   return SWAP16(*(u16*)tag->data);
+	   return tag->data[0]+tag->data[1]*256;
 	break;
 	case TAGID_REMOVEOBJECT2:
 	   return -1;
 	break;
     }
 
-    return SWAP16(*(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)
-- 
1.7.10.4