msi: Fix another double free.

parser_alloc() allocates memory and puts it on a list attached the to query object.
EXPR_sval() frees memory allocated via parser_alloc() on error but does not remove
the pointer from the list, which means that when the query destructor is called it
will be freed again.
This commit is contained in:
Hans Leidekker 2009-04-20 16:09:12 +02:00 committed by Alexandre Julliard
parent 91ac47b84b
commit 55ad3fdda2
1 changed files with 1 additions and 4 deletions

View File

@ -876,10 +876,7 @@ static struct expr * EXPR_sval( void *info, const struct sql_str *str )
{
e->type = EXPR_SVAL;
if( SQL_getstring( info, str, (LPWSTR *)&e->u.sval ) != ERROR_SUCCESS )
{
msi_free( e );
return NULL;
}
return NULL; /* e will be freed by query destructor */
}
return e;
}