Skip to content

Commit

Permalink
Merge pull request #953 from devnexen/master
Browse files Browse the repository at this point in the history
couple of mem leaks fixes
  • Loading branch information
Kangz committed Jul 19, 2016
2 parents 7cdd8a3 + f21bca0 commit 0ce2f3b
Showing 1 changed file with 34 additions and 25 deletions.
59 changes: 34 additions & 25 deletions daemon/src/engine/qcommon/parse.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1376,6 +1376,16 @@ static void Parse_FreeToken( token_t *token )
numtokens--;
}

static void Parse_FreeTokens(token_t *firsttoken)
{
token_t *t, *nexttoken;
for ( t = firsttoken; t; t = nexttoken )
{
nexttoken = t->next;
Parse_FreeToken( t );
}
}

/*
===============
Parse_ReadSourceToken
Expand Down Expand Up @@ -2719,7 +2729,7 @@ static int Parse_Evaluate( source_t *source, signed long int *intvalue,
double *floatvalue, int integer )
{
token_t token, *firsttoken, *lasttoken;
token_t *t, *nexttoken;
token_t *t;
define_t *define;
int defined = false;

Expand Down Expand Up @@ -2771,11 +2781,16 @@ static int Parse_Evaluate( source_t *source, signed long int *intvalue,

if ( !define )
{
Parse_FreeTokens( firsttoken );
Parse_SourceError( source, "can't evaluate %s, not defined", token.string );
return false;
}

if ( !Parse_ExpandDefineIntoSource( source, &token, define ) ) { return false; }
if ( !Parse_ExpandDefineIntoSource( source, &token, define ) )
{
Parse_FreeTokens( firsttoken );
return false;
}
}
}
//if the token is a number or a punctuation
Expand All @@ -2791,21 +2806,22 @@ static int Parse_Evaluate( source_t *source, signed long int *intvalue,
}
else //can't evaluate the token
{
Parse_FreeTokens( firsttoken );
Parse_SourceError( source, "can't evaluate %s", token.string );
return false;
}
}
while ( Parse_ReadLine( source, &token ) );

//
if ( !Parse_EvaluateTokens( source, firsttoken, intvalue, floatvalue, integer ) ) { return false; }
if ( !Parse_EvaluateTokens( source, firsttoken, intvalue, floatvalue, integer ) )
{
Parse_FreeTokens( firsttoken );
return false;
}

//
for ( t = firsttoken; t; t = nexttoken )
{
nexttoken = t->next;
Parse_FreeToken( t );
}
Parse_FreeTokens( firsttoken );

//
return true;
Expand All @@ -2821,7 +2837,7 @@ static int Parse_DollarEvaluate( source_t *source, signed long int *intvalue,
{
int indent, defined = false;
token_t token, *firsttoken, *lasttoken;
token_t *t, *nexttoken;
token_t *t;
define_t *define;

if ( intvalue ) { *intvalue = 0; }
Expand Down Expand Up @@ -2879,22 +2895,14 @@ static int Parse_DollarEvaluate( source_t *source, signed long int *intvalue,

if ( !define )
{
for ( t = firsttoken; t; t = nexttoken )
{
nexttoken = t->next;
Parse_FreeToken( t );
}
Parse_FreeTokens( firsttoken );
Parse_SourceError( source, "can't evaluate %s, not defined", token.string );
return false;
}

if ( !Parse_ExpandDefineIntoSource( source, &token, define ) )
{
for ( t = firsttoken; t; t = nexttoken )
{
nexttoken = t->next;
Parse_FreeToken( t );
}
Parse_FreeTokens( firsttoken );
return false;
}
}
Expand All @@ -2917,21 +2925,22 @@ static int Parse_DollarEvaluate( source_t *source, signed long int *intvalue,
}
else //can't evaluate the token
{
Parse_FreeTokens( firsttoken );
Parse_SourceError( source, "can't evaluate %s", token.string );
return false;
}
}
while ( Parse_ReadSourceToken( source, &token ) );

//
if ( !Parse_EvaluateTokens( source, firsttoken, intvalue, floatvalue, integer ) ) { return false; }
if ( !Parse_EvaluateTokens( source, firsttoken, intvalue, floatvalue, integer ) )
{
Parse_FreeTokens( firsttoken );
return false;
}

//
for ( t = firsttoken; t; t = nexttoken )
{
nexttoken = t->next;
Parse_FreeToken( t );
}
Parse_FreeTokens( firsttoken );

//
return true;
Expand Down

0 comments on commit 0ce2f3b

Please sign in to comment.