diff options
author | Alexey Kopytov <Alexey.Kopytov@Sun.com> | 2010-09-22 23:33:18 +0400 |
---|---|---|
committer | Alexey Kopytov <Alexey.Kopytov@Sun.com> | 2010-09-22 23:33:18 +0400 |
commit | a1f1e77c38147778ac76b3232ca10861cffb3dad (patch) | |
tree | ecfed3ad4c93790a5ce2ce97a44a165457c664d1 /dbug | |
parent | 6baf9d5a616da0dd0ed6762cfacdf43910ca8ebc (diff) | |
download | mariadb-git-a1f1e77c38147778ac76b3232ca10861cffb3dad.tar.gz |
Bug #56709: Memory leaks at running the 5.1 test suite
Fixed a number of memory leaks discovered by valgrind.
Diffstat (limited to 'dbug')
-rw-r--r-- | dbug/dbug.c | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/dbug/dbug.c b/dbug/dbug.c index 8fa5ed9af6b..76723fa8767 100644 --- a/dbug/dbug.c +++ b/dbug/dbug.c @@ -455,13 +455,8 @@ static void DbugParse(CODE_STATE *cs, const char *control) rel= control[0] == '+' || control[0] == '-'; if ((!rel || (!stack->out_file && !stack->next))) { - /* - We need to free what's already in init_settings, because unlike - the thread related stack frames there's a chance that something - is in these variables already. - */ - if (stack == &init_settings) - FreeState(cs, stack, 0); + /* Free memory associated with the state before resetting its members */ + FreeState(cs, stack, 0); stack->flags= 0; stack->delay= 0; stack->maxdepth= 0; @@ -1447,8 +1442,8 @@ static void PushState(CODE_STATE *cs) struct settings *new_malloc; new_malloc= (struct settings *) DbugMalloc(sizeof(struct settings)); + bzero(new_malloc, sizeof(struct settings)); new_malloc->next= cs->stack; - new_malloc->out_file= NULL; cs->stack= new_malloc; } @@ -1957,7 +1952,7 @@ static FILE *OpenProfile(CODE_STATE *cs, const char *name) static void DBUGCloseFile(CODE_STATE *cs, FILE *fp) { - if (fp != stderr && fp != stdout && fclose(fp) == EOF) + if (fp != NULL && fp != stderr && fp != stdout && fclose(fp) == EOF) { pthread_mutex_lock(&THR_LOCK_dbug); (void) fprintf(cs->stack->out_file, ERR_CLOSE, cs->process); |