]> git.xonotic.org Git - xonotic/gmqcc.git/commitdiff
Fix memory leaks
authorDale Weiler <killfieldengine@gmail.com>
Thu, 22 Nov 2012 21:38:14 +0000 (21:38 +0000)
committerDale Weiler <killfieldengine@gmail.com>
Thu, 22 Nov 2012 21:38:14 +0000 (21:38 +0000)
Makefile
test.c
util.c

index 13a182a496e3855766588fddb2a8c37ef273a8a2..144fe4cabc2df97a3bcce432d56643c987353130 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -3,7 +3,7 @@ PREFIX := /usr/local
 BINDIR := $(PREFIX)/bin
 
 CC     ?= clang
-CFLAGS += -Wall -I. -fomit-frame-pointer -fno-stack-protector -fno-common
+CFLAGS += -Wall -I. -Os
 #turn on tons of warnings if clang is present
 ifeq ($(CC), clang)
        CFLAGS +=                         \
diff --git a/test.c b/test.c
index ed66f9d6c9337fcfa3dcb2e79eef34d545a60cd0..442c1350ddef37d3186ef373f6384f9380deff46 100644 (file)
--- a/test.c
+++ b/test.c
@@ -571,8 +571,8 @@ void task_template_destroy(task_template_t **template) {
      * checks will fail if template pointer is reused.
      */
     mem_d(*template);
-    task_template_nullify(*template);
-    *template = NULL;
+    //task_template_nullify(*template);
+    //*template = NULL;
 }
 
 /*
@@ -861,6 +861,8 @@ bool task_execute(task_template_t *template) {
              */
             success = !!!(strcmp(data, template->comparematch[compare++]));
         }
+        mem_d(data);
+        data = NULL;
     }
     pclose(execute);
     return success;
@@ -874,7 +876,6 @@ bool task_execute(task_template_t *template) {
  */
 void task_schedualize(const char *curdir) {
     bool   execute  = false;
-    char  *back     = NULL;
     char  *data     = NULL;
     size_t size     = 0;
     size_t i;
@@ -898,12 +899,10 @@ void task_schedualize(const char *curdir) {
          * then we do the same for stderr.
          */    
         while (util_getline(&data, &size, task_tasks[i].runhandles[1]) != EOF) {
-            back = data;
             fputs(data, task_tasks[i].stdoutlog);
             fflush(task_tasks[i].stdoutlog);
         }
         while (util_getline(&data, &size, task_tasks[i].runhandles[2]) != EOF) {
-            back = data;
             /*
              * If a string contains an error we just dissalow execution
              * of it in the vm.
@@ -920,9 +919,8 @@ void task_schedualize(const char *curdir) {
             fputs(data, task_tasks[i].stderrlog);
             fflush(task_tasks[i].stdoutlog);
         }
+        //mem_d(data);
         
-        if (back)
-            mem_d(back);
         
         /*
          * If we can execute we do so after all data has been read and
@@ -952,8 +950,7 @@ void task_schedualize(const char *curdir) {
             task_tasks[i].template->successmessage  : "unknown"
         );
     }
-    if (back)
-        mem_d(back);
+    mem_d(data);
 }
 
 /*
diff --git a/util.c b/util.c
index 8b54251c76ed447e52c4b15f38b70b7888745c98..0789604434dfc2be603f6d8035cfe78fc2db0ff9 100644 (file)
--- a/util.c
+++ b/util.c
@@ -450,16 +450,9 @@ int util_getline(char **lineptr, size_t *n, FILE *stream) {
         int c = getc(stream);
 
         if (chr < 2) {
-            char *tmp = (char*)mem_a((*n+=(*n>16)?*n:64));
-            if  (!tmp)
-                return -1;
-
-            memcpy(tmp, *lineptr, pos - *lineptr);
             chr = *n + *lineptr - pos;
-            if (!(*lineptr = tmp)) {
-                mem_d (tmp);
+            if (!(*lineptr = (char*)mem_r(*lineptr,(*n+=(*n>16)?*n:64))))
                 return -1;
-            }
             pos = *n - chr + *lineptr;
         }