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