fixed png2swf -C bug.
[swftools.git] / lib / rfxswf.c
index 2f80c88..580a55d 100644 (file)
@@ -668,7 +668,7 @@ int swf_SetMatrix(TAG * t,MATRIX * m)
   return 0;
 }
 
-int swf_GetCXForm(TAG * t,CXFORM * cx,U8 alpha) //FIXME: alpha should be type bool
+int swf_GetCXForm(TAG * t,CXFORM * cx,U8 alpha)
 { CXFORM cxf;
   int hasadd;
   int hasmul;
@@ -782,6 +782,7 @@ void  swf_SetPassword(TAG * t, const char * password)
     fprintf(stderr, "rfxswf: Warning- no usable random generator found\n");
     fprintf(stderr, "Your password will be vulnerable to dictionary attacks\n");
 #endif
+    salt[2] = 0;
     
     md5string = crypt_md5(password, salt);
 
@@ -1229,7 +1230,10 @@ void swf_OptimizeTagOrder(SWF*swf)
          tag->next = level0;
          tag->prev = level0->prev;
          level0->prev = tag;
-         tag->prev->next = tag;
+          if(tag->prev)
+           tag->prev->next = tag;
+          else
+            swf->firstTag = tag;
          changes = 1;
        }
       }
@@ -1433,6 +1437,7 @@ int  swf_WriteSWF(int handle, SWF * swf)     // Writes SWF to file, returns leng
   if(handle<0) {
     writer_init_nullwriter(&writer);
     len = swf_WriteSWF2(&writer, swf);
+    return len;
   }
   writer_init_filewriter(&writer, handle);
   len = swf_WriteSWF2(&writer, swf);
@@ -1493,10 +1498,11 @@ int swf_WriteCGI(SWF * swf)
 SWF* swf_CopySWF(SWF*swf)
 {
     SWF*nswf = rfx_alloc(sizeof(SWF));
+    TAG*tag, *ntag;
     memcpy(nswf, swf, sizeof(SWF));
     nswf->firstTag = 0;
-    TAG*tag = swf->firstTag;
-    TAG*ntag = 0;
+    tag = swf->firstTag;
+    ntag = 0;
     while(tag) {
         ntag = swf_CopyTag(ntag, tag);
         if(!nswf->firstTag)