yet more big endian fixes
authorkramm <kramm>
Wed, 9 Jan 2002 11:51:07 +0000 (11:51 +0000)
committerkramm <kramm>
Wed, 9 Jan 2002 11:51:07 +0000 (11:51 +0000)
src/bitio.c

index eb7958c..fbdbe88 100644 (file)
@@ -33,12 +33,12 @@ void reader_input1(struct reader_t*r, void*target)
 }
 void reader_input2(struct reader_t*r, void*target)
 {
-    memcpy(target,&r->data[r->datapos],2);
+    *(u16*)target = SWAP16(*(u16*)&r->data[r->datapos]);
     r->datapos += 2;
 }
 void reader_input4(struct reader_t*r, void*target)
 {
-    memcpy(target,&r->data[r->datapos],4);
+    *(u32*)target = SWAP32(*(u32*)&r->data[r->datapos]);
     r->datapos += 4;
 }
 uchar*reader_getinputpos(struct reader_t*r)
@@ -81,7 +81,7 @@ void reader_readsbits(struct reader_t*r, s32*val,int num)
     {
        x|=(0xffffffff<<num);
     }
-    *(s32*)val=x;
+    *val=x;
 }
 
 u32 reader_getbits(struct reader_t*r, int num)
@@ -146,14 +146,16 @@ void writer_writeu8(struct writer_t*w, u8 value)
 
 void writer_writeu16(struct writer_t*w, u16 value)
 {
+    u16 value2 = SWAP16(value);
     writer_resetbits(w);
-    writer_write(w, &value, 2);
+    writer_write(w, &value2, 2);
 }
 
 void writer_writeu32(struct writer_t*w, u32 value)
 {
+    u16 value2 = SWAP32(value);
     writer_resetbits(w);
-    writer_write(w, &value, 4);
+    writer_write(w, &value2, 4);
 }
 
 void* writer_getpos(struct writer_t*w)