Changeset: d868c719debb for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d868c719debb
Modified Files:
embedded/monetdb_embedded.c
monetdb5/mal/mal_client.c
monetdb5/mal/mal_embedded.c
Branch: cmake-monetdblite
Log Message:
Fixed memory leaks.
diffs (69 lines):
diff --git a/embedded/monetdb_embedded.c b/embedded/monetdb_embedded.c
--- a/embedded/monetdb_embedded.c
+++ b/embedded/monetdb_embedded.c
@@ -221,10 +221,12 @@ monetdb_query_internal(monetdb_connectio
buffer query_buf;
stream *query_stream;
monetdb_result_internal *res_internal = NULL;
+ bstream *old_bstream;
if ((msg = validate_connection(conn,
"embedded.monetdb_query_internal")) != MAL_SUCCEED)
return msg;
+ old_bstream = c->fdin;
b = (backend *) c->sqlcontext;
m = b->mvc;
@@ -243,12 +245,12 @@ monetdb_query_internal(monetdb_connectio
query_buf.buf = nq;
if (!(c->fdin = bstream_create(query_stream, query_len))) {
- close_stream(query_stream);
- return createException(MAL, "embedded.monetdb_query_internal",
SQLSTATE(HY001) "WARNING: could not setup query stream.");
+ msg = createException(MAL, "embedded.monetdb_query_internal",
SQLSTATE(HY001) "WARNING: could not setup query stream.");
+ goto cleanup;
}
if (bstream_next(c->fdin) < 0) {
- close_stream(query_stream);
- throw(MAL, "embedded.monetdb_query_internal", SQLSTATE(HY001)
"Internal error while starting the query");
+ msg = createException(MAL, "embedded.monetdb_query_internal",
SQLSTATE(HY001) "Internal error while starting the query");
+ goto cleanup;
}
b->language = language;
@@ -310,7 +312,7 @@ cleanup:
GDKfree(nq);
MSresetInstructions(c->curprg->def, 1);
bstream_destroy(c->fdin);
- c->fdin = NULL;
+ c->fdin = old_bstream;
commit_msg = SQLautocommit(m); //need always to commit even if msg is
set
if ((msg != MAL_SUCCEED || commit_msg != MAL_SUCCEED)) {
diff --git a/monetdb5/mal/mal_client.c b/monetdb5/mal/mal_client.c
--- a/monetdb5/mal/mal_client.c
+++ b/monetdb5/mal/mal_client.c
@@ -193,8 +193,8 @@ MCexitClient(Client c)
assert(c->bak == NULL);
if (c->fdin) {
/* protection against closing stdin stream */
- if (c->fdin->s == GDKstdin)
- c->fdin->s = NULL;
+ if (c->fdin->s == GDKstdin)
+ c->fdin->s = NULL;
bstream_destroy(c->fdin);
}
c->fdout = NULL;
diff --git a/monetdb5/mal/mal_embedded.c b/monetdb5/mal/mal_embedded.c
--- a/monetdb5/mal/mal_embedded.c
+++ b/monetdb5/mal/mal_embedded.c
@@ -188,9 +188,7 @@ malEmbeddedReset(void) //remove extra mo
mal_namespace_reset();
/* No need to clean up the namespace, it will simply be extended
* upon restart mal_namespace_reset(); */
-#ifndef HAVE_EMBEDDED
GDKreset(0); // terminate all other threads
-#endif
embeddedinitialized = false;
}
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list