Skip to content
Snippets Groups Projects
Commit 9805abb0 authored by Bruce Momjian's avatar Bruce Momjian
Browse files

This patch solves a couple of memory leaks in ecpglib.c.  The patch is
ok for both the
development tree (CVS) and for 6.5.3.

 Stephen Birch
parent 7431796b
No related branches found
No related tags found
No related merge requests found
...@@ -528,13 +528,13 @@ ECPGexecute(struct statement * stmt) ...@@ -528,13 +528,13 @@ ECPGexecute(struct statement * stmt)
{ {
int slen = strlen((char *) var->value); int slen = strlen((char *) var->value);
if (!(newcopy = ecpg_alloc(slen + 1, stmt->lineno))) if (!(mallocedval = ecpg_alloc(slen + 1, stmt->lineno)))
return false; return false;
strncpy(newcopy, (char *) var->value, slen); strncpy(mallocedval, (char *) var->value, slen);
newcopy[slen] = '\0'; mallocedval[slen] = '\0';
tobeinserted = newcopy; tobeinserted = mallocedval;
} }
break; break;
case ECPGt_varchar: case ECPGt_varchar:
...@@ -1132,13 +1132,13 @@ ECPGtrans(int lineno, const char *connection_name, const char *transaction) ...@@ -1132,13 +1132,13 @@ ECPGtrans(int lineno, const char *connection_name, const char *transaction)
con->committed = true; con->committed = true;
/* deallocate all prepared statements */ /* deallocate all prepared statements */
for (this = prep_stmts; this != NULL; this = this->next) while(prep_stmts != NULL) {
{ bool b = ECPGdeallocate(lineno, prep_stmts->name);
bool b = ECPGdeallocate(lineno, this->name);
if (!b) if (!b)
return false; return false;
} }
} }
return true; return true;
...@@ -1416,6 +1416,7 @@ ECPGdeallocate(int lineno, char *name) ...@@ -1416,6 +1416,7 @@ ECPGdeallocate(int lineno, char *name)
else else
prep_stmts = this->next; prep_stmts = this->next;
free(this);
return true; return true;
} }
ECPGlog("deallocate_prepare: invalid statement name %s\n", name); ECPGlog("deallocate_prepare: invalid statement name %s\n", name);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment