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