summaryrefslogtreecommitdiff
path: root/dbug
diff options
context:
space:
mode:
authorAlexey Kopytov <Alexey.Kopytov@Sun.com>2010-09-22 23:33:18 +0400
committerAlexey Kopytov <Alexey.Kopytov@Sun.com>2010-09-22 23:33:18 +0400
commita1f1e77c38147778ac76b3232ca10861cffb3dad (patch)
treeecfed3ad4c93790a5ce2ce97a44a165457c664d1 /dbug
parent6baf9d5a616da0dd0ed6762cfacdf43910ca8ebc (diff)
downloadmariadb-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.c13
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);