pe: fixed a memory leak in the resource handling code

This commit is contained in:
László Molnár
2006-05-18 15:19:13 +02:00
parent 7a00c12065
commit 7d50344512
2 changed files with 15 additions and 12 deletions
+3 -2
View File
@@ -1338,12 +1338,13 @@ upx_byte *Resource::build()
void Resource::destroy(upx_rnode *node,unsigned level) void Resource::destroy(upx_rnode *node,unsigned level)
{ {
delete [] node->name; node->name = NULL; delete [] node->name; node->name = NULL;
if (level == 3) if (level != 3)
return; {
upx_rbranch * const branch = (upx_rbranch *) node; upx_rbranch * const branch = (upx_rbranch *) node;
for (int ic = branch->nc; --ic >= 0; ) for (int ic = branch->nc; --ic >= 0; )
destroy(branch->children[ic],level + 1); destroy(branch->children[ic],level + 1);
delete [] branch->children; branch->children = NULL; delete [] branch->children; branch->children = NULL;
}
} }
static void lame_print_unicode(const upx_byte *p) static void lame_print_unicode(const upx_byte *p)
+4 -2
View File
@@ -1298,12 +1298,14 @@ upx_byte *Resource::build()
void Resource::destroy(upx_rnode *node,unsigned level) void Resource::destroy(upx_rnode *node,unsigned level)
{ {
delete [] node->name; node->name = NULL; delete [] node->name; node->name = NULL;
if (level == 3) if (level != 3)
return; {
upx_rbranch * const branch = (upx_rbranch *) node; upx_rbranch * const branch = (upx_rbranch *) node;
for (int ic = branch->nc; --ic >= 0; ) for (int ic = branch->nc; --ic >= 0; )
destroy(branch->children[ic],level + 1); destroy(branch->children[ic],level + 1);
delete [] branch->children; branch->children = NULL; delete [] branch->children; branch->children = NULL;
}
delete node;
} }
static void lame_print_unicode(const upx_byte *p) static void lame_print_unicode(const upx_byte *p)