Please apply one more patch.

This patch fixes:
 - saveXML() leaks xmlDoc
 - using delete for memory allocated by new[]
 - using delete[] for xmlDocDumpFormatMemory output.
 - unnecessary check "if (x) delete x;" ("delete 0" is safe)

No more memory handling error in SWFFile, I think.

---
Sorry about my poor English.
INADA Naoki  <[EMAIL PROTECTED]>
                    KLab Inc.
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;
 }
 
@@ -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;
+       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