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