introduced cross-asset dependencies
[swftools.git] / lib / bitio.c
index 19c662d..442bf48 100644 (file)
@@ -29,6 +29,7 @@
 #include <string.h>
 #include <memory.h>
 #include <fcntl.h>
+#include <errno.h>
 
 #include "../config.h"
 
@@ -68,9 +69,14 @@ static int reader_fileread(reader_t*reader, void* data, int len)
        reader->pos += ret;
     return ret;
 }
+static void reader_fileread_dealloc(reader_t*r)
+{
+    memset(r, 0, sizeof(reader_t));
+}
 void reader_init_filereader(reader_t*r, int handle)
 {
     r->read = reader_fileread;
+    r->dealloc = reader_fileread_dealloc;
     r->internal = (void*)handle;
     r->type = READER_TYPE_FILE;
     r->mybyte = 0;
@@ -338,7 +344,7 @@ static void zlib_error(int ret, char* msg, z_stream*zs)
          msg,
          ret,
          zs->msg?zs->msg:"unknown");
-    perror("errno:");
+    if(errno) perror("errno:");
     exit(1);
 }
 #endif
@@ -678,6 +684,10 @@ U32 reader_readU32(reader_t*r)
 }
 float reader_readFloat(reader_t*r)
 {
+    float f;
+    r->read(r, &f, 4);
+    return f;
+
     U8 b1=0,b2=0,b3=0,b4=0;
     r->read(r, &b1, 1);
     r->read(r, &b2, 1);
@@ -743,7 +753,10 @@ void writer_writeU32(writer_t*w, unsigned long v)
 }
 void writer_writeFloat(writer_t*w, float f)
 {
-    unsigned long v = *(unsigned long*)&f;
+    w->write(w, &f, 4);
+    return;
+
+    unsigned v = *(unsigned*)&f;
     unsigned char b1 = v;
     unsigned char b2 = v>>8;
     unsigned char b3 = v>>16;