diff --git a/src/interfaces/odbc/environ.c b/src/interfaces/odbc/environ.c index 6099ba4d10..fb8ed6869a 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 6b551792fe..555f9bff4c 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;