Revision: 78172
          http://sourceforge.net/p/brlcad/code/78172
Author:   starseeker
Date:     2021-02-04 15:23:43 +0000 (Thu, 04 Feb 2021)
Log Message:
-----------
valgrind caught a few memory leaks in libanalyze

Modified Paths:
--------------
    brlcad/trunk/src/libanalyze/raydiff.c
    brlcad/trunk/src/libanalyze/util.cpp
    brlcad/trunk/src/libged/tests/push.cpp

Modified: brlcad/trunk/src/libanalyze/raydiff.c
===================================================================
--- brlcad/trunk/src/libanalyze/raydiff.c       2021-02-04 15:06:26 UTC (rev 
78171)
+++ brlcad/trunk/src/libanalyze/raydiff.c       2021-02-04 15:23:43 UTC (rev 
78172)
@@ -197,7 +197,7 @@
     int count = 0;
     struct rt_i *rtip = NULL;
     int ncpus = bu_avail_cpus();
-    fastf_t *rays;
+    fastf_t *rays = NULL;
     struct rt_gen_worker_vars *state = (struct rt_gen_worker_vars 
*)bu_calloc(ncpus+1, sizeof(struct rt_gen_worker_vars ), "state");
     struct raydiff_container *local_state = (struct raydiff_container 
*)bu_calloc(ncpus+1, sizeof(struct raydiff_container), "local state");
     struct bu_ptbl test_tbl = BU_PTBL_INIT_ZERO;
@@ -336,14 +336,27 @@
 memfree:
     /* Free memory not stored in tables */
     for (i = 0; i < ncpus+1; i++) {
-       if (local_state[i].left != NULL) BU_PUT(local_state[i].left, struct 
bu_ptbl);
-       if (local_state[i].right != NULL) BU_PUT(local_state[i].right, struct 
bu_ptbl);
-       if (local_state[i].both != NULL) BU_PUT(local_state[i].both, struct 
bu_ptbl);
+       if (local_state[i].left != NULL) {
+           bu_ptbl_free(local_state[i].left);
+           BU_PUT(local_state[i].left, struct bu_ptbl);
+       }
+       if (local_state[i].right != NULL) {
+           bu_ptbl_free(local_state[i].right);
+           BU_PUT(local_state[i].right, struct bu_ptbl);
+       }
+       if (local_state[i].both != NULL) {
+           bu_ptbl_free(local_state[i].both);
+           BU_PUT(local_state[i].both, struct bu_ptbl);
+       }
        if (local_state[i].left_name)  bu_free((void 
*)local_state[i].left_name, "left name");
        if (local_state[i].right_name) bu_free((void 
*)local_state[i].right_name, "right name");
        /*BU_PUT(state[i].resp, struct resource);*/
     }
 
+    if (rays) {
+       bu_free(rays, "rays");
+    }
+
     if (rtip) {
        rt_free_rti(rtip);
     }

Modified: brlcad/trunk/src/libanalyze/util.cpp
===================================================================
--- brlcad/trunk/src/libanalyze/util.cpp        2021-02-04 15:06:26 UTC (rev 
78171)
+++ brlcad/trunk/src/libanalyze/util.cpp        2021-02-04 15:23:43 UTC (rev 
78172)
@@ -109,7 +109,7 @@
     bu_free(xdata->n_vec, "x vec inputs");
     bu_free(xdata->n_p, "x p inputs");
     if (ret < 0) {
-       ret = 0;
+       count = ret;
        goto memfree;
     }
 
@@ -179,7 +179,6 @@
 /*
     bu_log("ray cnt: %d\n", count);
 */
-    return count;
 
 memfree:
     /* Free memory not stored in tables */
@@ -189,7 +188,7 @@
     if (xdata) BU_PUT(xdata, struct rt_pattern_data);
     if (ydata) BU_PUT(ydata, struct rt_pattern_data);
     if (zdata) BU_PUT(zdata, struct rt_pattern_data);
-    return ret;
+    return count;
 }
 
 /* TODO - consolidate with above */
@@ -488,6 +487,7 @@
 
     bu_parallel(segfilter_gen_worker, ncpus, (void *)state);
 
+    bu_free(local_state, "local state");
     bu_free(state, "state");
 
     return;

Modified: brlcad/trunk/src/libged/tests/push.cpp
===================================================================
--- brlcad/trunk/src/libged/tests/push.cpp      2021-02-04 15:06:26 UTC (rev 
78171)
+++ brlcad/trunk/src/libged/tests/push.cpp      2021-02-04 15:23:43 UTC (rev 
78172)
@@ -302,6 +302,7 @@
     }
 
     // Clean up
+    ged_close(gedp);
     bu_vls_free(&gfile);
     bu_vls_free(&gbasename);
     bu_vls_free(&wdir);

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to