X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fbitio.c;h=442bf488714351594335d3856e49b187e1fc7837;hb=b6ebc39257e2814f08a17d8c179c3991c16053ba;hp=19c662d03510308e49f4972d2d42ad5d1f761650;hpb=2a03e2d0338dd114e0119072b64f6b154763dc0f;p=swftools.git diff --git a/lib/bitio.c b/lib/bitio.c index 19c662d..442bf48 100644 --- a/lib/bitio.c +++ b/lib/bitio.c @@ -29,6 +29,7 @@ #include #include #include +#include #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;