Changeset: 6638d256fcdb for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6638d256fcdb
Modified Files:
        gdk/gdk_logger.c
        gdk/gdk_utils.c
        monetdb5/mal/mal.c
        monetdb5/mal/mal_linker.c
        monetdb5/mal/mal_runtime.c
        monetdb5/mal/mal_session.c
        sql/storage/bat/bat_logger.c
Branch: default
Log Message:

Memory leaks.


diffs (130 lines):

diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -1757,8 +1757,13 @@ logger_load(int debug, const char* fn, c
   error:
        if (fp)
                fclose(fp);
-       if (lg)
+       if (lg) {
+               GDKfree(lg->fn);
+               GDKfree(lg->dir);
+               GDKfree(lg->local_dir);
+               GDKfree(lg->buf);
                GDKfree(lg);
+       }
        return LOG_ERR;
 }
 
@@ -1815,7 +1820,7 @@ logger_new(int debug, const char *fn, co
                        fprintf(stderr, "!ERROR: logger_new: strdup failed\n");
                        GDKfree(lg->fn);
                        GDKfree(lg->dir);
-                       GDKfree(lg->local_dir);
+                       GDKfree(lg->buf);
                        GDKfree(lg);
                        return NULL;
                }
@@ -1833,6 +1838,7 @@ logger_new(int debug, const char *fn, co
                                GDKfree(lg->fn);
                                GDKfree(lg->dir);
                                GDKfree(lg->local_dir);
+                               GDKfree(lg->buf);
                                GDKfree(lg);
                                return NULL;
                        }
diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c
--- a/gdk/gdk_utils.c
+++ b/gdk/gdk_utils.c
@@ -742,6 +742,8 @@ GDKreset(int status)
 #endif
                GDKnr_threads = 0;
                GDKnrofthreads = 0;
+               close_stream((stream *) THRdata[0]);
+               close_stream((stream *) THRdata[1]);
                memset((char*) GDKbatLock,0, sizeof(GDKbatLock));
                memset((char*) GDKbbpLock,0,sizeof(GDKbbpLock));
 
diff --git a/monetdb5/mal/mal.c b/monetdb5/mal/mal.c
--- a/monetdb5/mal/mal.c
+++ b/monetdb5/mal/mal.c
@@ -141,6 +141,12 @@ void mserver_reset(void)
        mal_factory_reset();
        mal_dataflow_reset();
        THRdel(mal_clients->mythread);
+       GDKfree(mal_clients->errbuf);
+       mal_clients->fdin->s = NULL;
+       bstream_destroy(mal_clients->fdin);
+       GDKfree(mal_clients->prompt);
+       GDKfree(mal_clients->username);
+       freeStack(mal_clients->glb);
        mal_client_reset();
        mal_linker_reset();
        mal_resource_reset();
diff --git a/monetdb5/mal/mal_linker.c b/monetdb5/mal/mal_linker.c
--- a/monetdb5/mal/mal_linker.c
+++ b/monetdb5/mal/mal_linker.c
@@ -110,7 +110,7 @@ getAddress(stream *out, str modname, str
 
        adr = (MALfcn) dlsym(dl, fcnname);
        filesLoaded[lastfile].modname = GDKstrdup("libmonetdb5");
-       filesLoaded[lastfile].fullname = "libmonetdb5";
+       filesLoaded[lastfile].fullname = GDKstrdup("libmonetdb5");
        filesLoaded[lastfile].handle = dl;
        lastfile ++;
        if(adr != NULL)
@@ -259,7 +259,8 @@ mal_linker_reset(void)
        for (i = 0; i < lastfile; i++){
                if (filesLoaded[i].fullname) {
                        /* dlclose(filesLoaded[i].handle);*/
-                       if (filesLoaded[i].modname) 
GDKfree(filesLoaded[i].modname);
+                       GDKfree(filesLoaded[i].modname);
+                       GDKfree(filesLoaded[i].fullname);
                }
                filesLoaded[i].modname = NULL;
                filesLoaded[i].fullname = NULL;
diff --git a/monetdb5/mal/mal_runtime.c b/monetdb5/mal/mal_runtime.c
--- a/monetdb5/mal/mal_runtime.c
+++ b/monetdb5/mal/mal_runtime.c
@@ -32,6 +32,7 @@ static int calltag =0; // to identify ea
 void
 mal_runtime_reset(void)
 {
+       GDKfree(QRYqueue);
        QRYqueue = 0;
        qtop = 0;
        qsize = 0;
diff --git a/monetdb5/mal/mal_session.c b/monetdb5/mal/mal_session.c
--- a/monetdb5/mal/mal_session.c
+++ b/monetdb5/mal/mal_session.c
@@ -470,6 +470,11 @@ MSserveClient(void *dummy)
        }
        if (!isAdministrator(c))
                MCcloseClient(c);
+       if (strcmp(c->nspace->name, "user") == 0) {
+               GDKfree(c->nspace->space);
+               GDKfree(c->nspace);
+               c->nspace = NULL;
+       }
 }
 
 /*
diff --git a/sql/storage/bat/bat_logger.c b/sql/storage/bat/bat_logger.c
--- a/sql/storage/bat/bat_logger.c
+++ b/sql/storage/bat/bat_logger.c
@@ -182,9 +182,12 @@ bl_destroy(void)
 
        bat_logger = NULL;
        if (l) {
-               // FIXME: either of those corrupts stuff
-               //logger_exit(l);
-               //logger_destroy(l);
+               close_stream(l->log);
+               GDKfree(l->fn);
+               GDKfree(l->dir);
+               GDKfree(l->local_dir);
+               GDKfree(l->buf);
+               GDKfree(l);
        }
 }
 
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to