pe: fixed a memory leak in the resource handling code
This commit is contained in:
+3
-2
@@ -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
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user