* fixed a bug in swf_GetRGBA
[swftools.git] / lib / rfxswf.c
index f56427a..cd2e0b6 100644 (file)
@@ -78,9 +78,11 @@ U32   swf_GetTagPos(TAG * t)   { return t->pos; }
 void swf_SetTagPos(TAG * t,U32 pos)
 { swf_ResetReadBits(t);
   if (pos<=t->len) t->pos = pos;
-  #ifdef DEBUG_RFXSWF
-  else fprintf(stderr,"SetTagPos() out of bounds: TagID = %i\n",t->id);
-  #endif
+  else { 
+#ifdef DEBUG_RFXSWF
+    fprintf(stderr,"SetTagPos(%d) out of bounds: TagID = %i\n",pos, t->id);
+#endif
+  }
 }
 
 char* swf_GetString(TAG*t)
@@ -288,7 +290,7 @@ int swf_SetRGBA(TAG * t,RGBA * col)
 void swf_GetRGBA(TAG * t, RGBA * col)
 {
     RGBA dummy;
-    if(!col);
+    if(!col)
        col = &dummy;
     col->r = swf_GetU8(t);
     col->g = swf_GetU8(t);
@@ -433,6 +435,8 @@ void swf_ExpandRect2(SRECT*src, SRECT*add)
 {
     if((add->xmin | add->ymin | add->xmax | add->ymax)==0)
        return;
+    if((src->xmin | src->ymin | src->xmax | src->ymax)==0)
+       *src = *add;
     if(add->xmin < src->xmin)
        src->xmin = add->xmin;
     if(add->ymin < src->ymin)
@@ -1080,14 +1084,6 @@ void swf_FoldAll(SWF*swf)
     }
 }
 
-void swf_FoldAllTags(TAG*tag)
-{
-    SWF swf;
-    memset(&swf, 0, sizeof(swf));
-    swf.firstTag = tag;
-    swf_FoldAll(&swf);
-}
-
 void swf_UnFoldAll(SWF*swf)
 {
     TAG*tag = swf->firstTag;
@@ -1223,7 +1219,7 @@ int  swf_WriteSWF2(struct writer_t*writer, SWF * swf)     // Writes SWF to file,
 
   if (swf->firstTag && swf_NextTag(swf->firstTag))
     if (swf_GetTagID(swf_NextTag(swf->firstTag))!=ST_REFLEX)
-      swf_SetBlock(swf_InsertTag(swf->firstTag,ST_REFLEX),"rfx",3);
+      swf_SetBlock(swf_InsertTagBefore(swf, swf->firstTag,ST_REFLEX),"rfx",3);
 
 #endif // INSERT_RFX_TAG
 
@@ -1403,6 +1399,7 @@ void swf_FreeTags(SWF * swf)                 // Frees all malloc'ed memory for t
     free(t);
     t = tnew;
   }
+  swf->firstTag = 0;
 }
 
 // include advanced functions