diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/interfaces/odbc/environ.c | 1 | ||||
-rw-r--r-- | src/interfaces/odbc/socket.c | 7 |
2 files changed, 8 insertions, 0 deletions
diff --git a/src/interfaces/odbc/environ.c b/src/interfaces/odbc/environ.c index 6099ba4d100..fb8ed6869ae 100644 --- a/src/interfaces/odbc/environ.c +++ b/src/interfaces/odbc/environ.c @@ -425,6 +425,7 @@ char rv = 1; if (conns[lf] && conns[lf]->henv == self) rv = rv && CC_Destructor(conns[lf]); } + free(self); mylog("exit EN_Destructor: rv = %d\n", rv); return rv; diff --git a/src/interfaces/odbc/socket.c b/src/interfaces/odbc/socket.c index 6b551792fe1..555f9bff4cc 100644 --- a/src/interfaces/odbc/socket.c +++ b/src/interfaces/odbc/socket.c @@ -58,11 +58,18 @@ SocketClass *rv; rv->buffer_in = (unsigned char *) malloc(globals.socket_buffersize); if ( ! rv->buffer_in) + { + free(rv); return NULL; + } rv->buffer_out = (unsigned char *) malloc(globals.socket_buffersize); if ( ! rv->buffer_out) + { + free(rv->buffer_in); + free(rv); return NULL; + } rv->errormsg = NULL; rv->errornumber = 0; |