From 5778212c14372e805ab7b6aecc38bac4ada0b463 Mon Sep 17 00:00:00 2001
From: Armin Luntzer <armin.luntzer@univie.ac.at>
Date: Wed, 11 Dec 2019 16:14:53 +0100
Subject: [PATCH] SPECTRUM: plug memory leak 	  when persistence was 0,
 spectral data memory was never freed

---
 src/client/widgets/spectrum/spectrum.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/src/client/widgets/spectrum/spectrum.c b/src/client/widgets/spectrum/spectrum.c
index 118a17e..c4546ad 100644
--- a/src/client/widgets/spectrum/spectrum.c
+++ b/src/client/widgets/spectrum/spectrum.c
@@ -992,13 +992,14 @@ static void spectrum_handle_pr_spec_data(gpointer instance,
 		amp[i] = (gdouble) s->spec[i] * 0.001;	/* mK to K */
 	}
 
-
 	/* everyone gets a copy of the data */
-	sp    = (struct spectrum *) g_malloc(sizeof(struct spectrum));
-	sp->x = g_memdup(frq, s->n * sizeof(gdouble));
-	sp->y = g_memdup(amp, s->n * sizeof(gdouble));
-	sp->n = s->n;
-	spectrum_append_avg(p, sp);
+	if (p->cfg->n_per) {
+		sp    = (struct spectrum *) g_malloc(sizeof(struct spectrum));
+		sp->x = g_memdup(frq, s->n * sizeof(gdouble));
+		sp->y = g_memdup(amp, s->n * sizeof(gdouble));
+		sp->n = s->n;
+		spectrum_append_data(p, sp);
+	}
 
 	sp    = (struct spectrum *) g_malloc(sizeof(struct spectrum));
 	sp->x = frq;
@@ -1010,7 +1011,7 @@ static void spectrum_handle_pr_spec_data(gpointer instance,
 	spectrum_record_add(p, sp);
 
 	/* this one does */
-	spectrum_append_data(p, sp);
+	spectrum_append_avg(p, sp);
 }
 
 
-- 
GitLab