aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortlatorre <tlatorre@uchicago.edu>2018-09-18 10:35:20 -0500
committertlatorre <tlatorre@uchicago.edu>2018-09-18 10:35:20 -0500
commit81953f2131f8badd065f82585c7c06edf3c5d1e1 (patch)
tree291f393bdbfcd31fc995c2c5c1747efa1ec32bae /src
parent833819200e38b1e6386e62bbf28cc8f5c78d2e05 (diff)
downloadsddm-81953f2131f8badd065f82585c7c06edf3c5d1e1.tar.gz
sddm-81953f2131f8badd065f82585c7c06edf3c5d1e1.tar.bz2
sddm-81953f2131f8badd065f82585c7c06edf3c5d1e1.zip
add free_charge() to free memory used to interpolate the charge distributions
Diffstat (limited to 'src')
-rw-r--r--src/fit.c9
-rw-r--r--src/sno_charge.c13
-rw-r--r--src/sno_charge.h1
-rw-r--r--src/test-charge.c2
-rw-r--r--src/test.c2
5 files changed, 27 insertions, 0 deletions
diff --git a/src/fit.c b/src/fit.c
index 30e27f1..339eeba 100644
--- a/src/fit.c
+++ b/src/fit.c
@@ -5467,6 +5467,7 @@ int main(int argc, char **argv)
}
free_interpolation();
+ free_charge();
pmt_response_free();
db_free(db);
@@ -5478,7 +5479,15 @@ int main(int argc, char **argv)
return 0;
err:
+ free_interpolation();
+ free_charge();
+ pmt_response_free();
+
+ db_free(db);
+
+ if (fout) fclose(fout);
zebra_close(f);
+
return 1;
}
diff --git a/src/sno_charge.c b/src/sno_charge.c
index f96655b..1f39706 100644
--- a/src/sno_charge.c
+++ b/src/sno_charge.c
@@ -243,3 +243,16 @@ void init_charge(void)
free(x);
free(y);
}
+
+void free_charge(void)
+{
+ size_t i;
+
+ for (i = 0; i < MAX_PE; i++) {
+ gsl_spline_free(splines[i]);
+ }
+
+ gsl_interp_accel_free(acc);
+
+ initialized = 0;
+}
diff --git a/src/sno_charge.h b/src/sno_charge.h
index bd95cc4..1004e30 100644
--- a/src/sno_charge.h
+++ b/src/sno_charge.h
@@ -5,5 +5,6 @@ void init_charge(void);
double pq(double q, int n);
double get_log_pmiss(int n);
double spe_pol2exp(double q);
+void free_charge(void);
#endif
diff --git a/src/test-charge.c b/src/test-charge.c
index 0b73d24..2fe199b 100644
--- a/src/test-charge.c
+++ b/src/test-charge.c
@@ -82,5 +82,7 @@ int main(int argc, char **argv)
free(x);
+ free_charge();
+
return 0;
}
diff --git a/src/test.c b/src/test.c
index 5f9c655..6bb2046 100644
--- a/src/test.c
+++ b/src/test.c
@@ -284,6 +284,8 @@ int test_sno_charge_integral(char *err)
goto err;
}
+ free_charge();
+
gsl_integration_cquad_workspace_free(w);
return 0;