Sorry, previous patch contains error.
This is corrected patch.
Index: src/SWFFile.cpp
===================================================================
--- src/SWFFile.cpp     (revision 243)
+++ src/SWFFile.cpp     (working copy)
@@ -102,7 +102,7 @@
        return length+8;
        
 fail:
-       if( data ) delete data;
+       if( data ) delete[] data;
        if( !_ctx && ctx ) delete ctx;
        return 0;
 }
@@ -157,14 +157,14 @@
        }
 
        delete w;
-       delete data;
-       if( !_ctx && ctx ) delete ctx;
+       delete[] data;
+       if( !_ctx ) delete ctx;
        return( length+8 );
        
 fail:
-       if( w ) delete w;
-       if( data ) delete data;
-       if( !_ctx && ctx ) delete ctx;
+       delete w;
+       delete[] data;
+       if( !_ctx ) delete ctx;
        return 0;
 }
 
@@ -172,7 +172,7 @@
        Context *ctx;
        ctx = _ctx ? _ctx : new Context;
 
-       xmlDocPtr doc;
+       xmlDocPtr doc = 0;
        xmlNodePtr root;
        
        if( !header ) {
@@ -193,12 +193,12 @@
        ctx->swfVersion = version;
        header->writeXML( root, ctx );
        
-       if( !_ctx && ctx ) delete ctx;
+       if( !_ctx ) delete ctx;
        return doc;
        
 fail:
-       if( doc ) xmlFree( doc );
-       if( !_ctx && ctx ) delete ctx;
+       if (doc) xmlFreeDoc(doc);
+       if( !_ctx ) delete ctx;
        return NULL;
 }
 
@@ -213,11 +213,12 @@
        
        if( size ) fwrite( data, size, 1, fp );
 
-       if( data ) delete[] data;
+       if( data ) xmlFree(data);
+       xmlFreeDoc(doc);
        return size;
        
 fail:
-       if( data ) delete[] data;
+       if( data ) xmlFree(data);
        return 0;
 }
 
@@ -267,12 +268,12 @@
        header->parseXML( headerNode, ctx );
 
        length = (header->getSize(ctx,0)/8);
-               
-       if( !_ctx && ctx ) delete ctx;
+
+       if( !_ctx ) delete ctx;
        return length+8;
        
 fail:
-       if( !_ctx && ctx ) delete ctx;
+       if( !_ctx ) delete ctx;
        return 0;
 }
 
@@ -289,7 +290,7 @@
        
        root = doc->xmlRootNode;
        length = setXML( root, ctx );
-               
+
        xmlFreeDoc( doc );
        return length;
        
_______________________________________________
swfmill mailing list
swfmill@osflash.org
http://osflash.org/mailman/listinfo/swfmill_osflash.org

Reply via email to