X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Frfxswf.c;h=f0ece33fbff8db96d6b13665fd57da1d94e96d9f;hb=8825d41ef224eafc985545b620046e2a27ef46b9;hp=ed9492712477f3587937c4ed4306ca1767f0cb16;hpb=8526dcf3a698c688e2cc4430ae106b5ecf70677f;p=swftools.git diff --git a/lib/rfxswf.c b/lib/rfxswf.c index ed94927..f0ece33 100644 --- a/lib/rfxswf.c +++ b/lib/rfxswf.c @@ -54,8 +54,8 @@ void* rfx_alloc(int size) { void*ptr; if(size == 0) { - *(int*)0 = 0xdead; - fprintf(stderr, "Warning: Zero alloc\n"); + //*(int*)0 = 0xdead; + //fprintf(stderr, "Warning: Zero alloc\n"); return 0; } @@ -71,8 +71,8 @@ void* rfx_realloc(void*data, int size) { void*ptr; if(size == 0) { - *(int*)0 = 0xdead; - fprintf(stderr, "Warning: Zero realloc\n"); + //*(int*)0 = 0xdead; + //fprintf(stderr, "Warning: Zero realloc\n"); rfx_free(data); return 0; } @@ -93,8 +93,8 @@ void* rfx_calloc(int size) { void*ptr; if(size == 0) { - *(int*)0 = 0xdead; - fprintf(stderr, "Warning: Zero alloc\n"); + //*(int*)0 = 0xdead; + //fprintf(stderr, "Warning: Zero alloc\n"); return 0; } #ifdef HAVE_CALLOC @@ -120,6 +120,16 @@ void rfx_free(void*ptr) free(ptr); } +#ifdef MEMORY_INFO +long rfx_memory_used() +{ +} + +char* rfx_memory_used_str() +{ +} +#endif + // internal constants #define MALLOC_SIZE 128 @@ -549,6 +559,8 @@ SRECT swf_TurnRect(SRECT r, MATRIX* m) { SRECT g; SPOINT p1,p2,p3,p4,pp1,pp2,pp3,pp4; + if(!m) + return r; p1.x = r.xmin;p1.y = r.ymin; p2.x = r.xmax;p2.y = r.ymin; p3.x = r.xmin;p3.y = r.ymax; @@ -916,7 +928,12 @@ TAG * swf_ReadTag(struct reader_t*reader, TAG * prev) if (t->len) { t->data = (U8*)rfx_alloc(t->len); t->memsize = t->len; - if (reader->read(reader, t->data, t->len) != t->len) return NULL; + if (reader->read(reader, t->data, t->len) != t->len) { + fprintf(stderr, "rfxswf: Warning: Short read (tagid %d). File truncated?\n", t->id); + free(t->data);t->data=0; + free(t); + return NULL; + } } if (prev) @@ -1310,6 +1327,10 @@ int swf_WriteSWF2(struct writer_t*writer, SWF * swf) // Writes SWF to file, len += swf_WriteTag(-1,t); if(t->id == ST_DEFINESPRITE && !swf_IsFolded(t)) inSprite++; else if(t->id == ST_END && inSprite) inSprite--; + else if(t->id == ST_END && !inSprite) { + if(t->prev && t->prev->id!=ST_SHOWFRAME) + frameCount++; + } else if(t->id == ST_SHOWFRAME && !inSprite) frameCount++; t = swf_NextTag(t); }