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