From dc17012ed634e200565d88b5954e8467b65197f9 Mon Sep 17 00:00:00 2001 From: Nick Lanham Date: Mon, 13 Feb 2012 16:20:29 +0100 Subject: [PATCH] Free up scanned kit memory on cleanup. Fixes a memory leak --- drmr.c | 1 + drmr_hydrogen.c | 11 +++++++++++ drmr_ui.c | 1 + 3 files changed, 13 insertions(+) diff --git a/drmr.c b/drmr.c index 5cf7bba..74e4cec 100644 --- a/drmr.c +++ b/drmr.c @@ -263,6 +263,7 @@ static void cleanup(LV2_Handle instance) { pthread_join(drmr->load_thread, 0); if (drmr->num_samples > 0) free_samples(drmr->samples,drmr->num_samples); + free_kits(drmr->kits); free(drmr->gains); free(instance); } diff --git a/drmr_hydrogen.c b/drmr_hydrogen.c index 8f77a75..e1c73ec 100644 --- a/drmr_hydrogen.c +++ b/drmr_hydrogen.c @@ -326,6 +326,17 @@ void free_samples(drmr_sample* samples, int num_samples) { free(samples); } +void free_kits(kits* kits) { + int i; + for (i = 0;i < kits->num_kits;i++) { + free(kits->kits[i].name); + free(kits->kits[i].desc); + free(kits->kits[i].path); + } + free(kits->kits); + free(kits); +} + int load_sample(char* path, drmr_layer* layer) { SNDFILE* sndf; int size; diff --git a/drmr_ui.c b/drmr_ui.c index 9bf0f28..78d33a5 100644 --- a/drmr_ui.c +++ b/drmr_ui.c @@ -214,6 +214,7 @@ static void cleanup(LV2UI_Handle handle) { gtk_widget_destroy(ui->drmr_widget); if (ui->gain_sliders) free(ui->gain_sliders); if (ui->pan_sliders) free(ui->pan_sliders); + free_kits(ui->kits); free(ui); }