cmScore.c : Added _cmScFreeSectList() to fix memory on free when CSV parse fails.

This commit is contained in:
kevin 2016-08-17 18:58:00 -04:00
parent 9bc41724d6
commit fdfe4d404a

View File

@ -361,6 +361,22 @@ void _cmScFreeMarkList( cmScMark_t* markList )
} }
} }
void _cmScFreeSectList( cmSc_t* p )
{
// release the section linked list
cmScSect_t* sp = p->sectList;
cmScSect_t* np = NULL;
while(sp!=NULL)
{
np = sp->link;
cmMemFree(sp);
sp = np;
}
p->sectList = NULL;
}
void _cmScFreeSetList( cmScSet_t* setList ) void _cmScFreeSetList( cmScSet_t* setList )
{ {
cmScSet_t* tp = setList; cmScSet_t* tp = setList;
@ -412,6 +428,8 @@ cmScRC_t _cmScFinalize( cmSc_t* p )
cmMemFree(p->sets); cmMemFree(p->sets);
} }
_cmScFreeSectList( p );
_cmScFreeSetList(p->setList); _cmScFreeSetList(p->setList);
_cmScFreeMarkList(p->markList); _cmScFreeMarkList(p->markList);
@ -1119,9 +1137,10 @@ cmScRC_t _cmScProcSets( cmSc_t* p )
cmScRC_t _cmScProcSections( cmSc_t* p, cmScSect_t* sectList ) cmScRC_t _cmScProcSections( cmSc_t* p )
{ {
cmScRC_t rc = kOkScRC; cmScRC_t rc = kOkScRC;
cmScSect_t* sectList = p->sectList;
unsigned i; unsigned i;
// count the sections // count the sections
@ -1166,16 +1185,9 @@ cmScRC_t _cmScProcSections( cmSc_t* p, cmScSect_t* sectList )
} }
} }
// release the section linked list
sp = sectList;
cmScSect_t* np = NULL;
while(sp!=NULL)
{
np = sp->link;
cmMemFree(sp);
sp = np;
}
_cmScFreeSectList(p);
//_cmScPrintSets("Sets",p->setList ); //_cmScPrintSets("Sets",p->setList );
_cmScProcSets(p); _cmScProcSets(p);
@ -1587,7 +1599,7 @@ cmScRC_t cmScoreInitialize( cmCtx_t* ctx, cmScH_t* hp, const cmChar_t* fn, doubl
if((rc = _cmScInitLocArray(p)) != kOkScRC ) if((rc = _cmScInitLocArray(p)) != kOkScRC )
goto errLabel; goto errLabel;
if((rc = _cmScProcSections(p,p->sectList)) != kOkScRC ) if((rc = _cmScProcSections(p)) != kOkScRC )
goto errLabel; goto errLabel;
if((rc = _cmScProcMarkers(p)) != kOkScRC ) if((rc = _cmScProcMarkers(p)) != kOkScRC )