From 72205464a954928407ec90c339384cd07bda3b91 Mon Sep 17 00:00:00 2001 From: Nick Lanham Date: Fri, 17 Feb 2012 12:16:40 +0100 Subject: [PATCH] Fix some memory leaks when loading a kit --- drmr_hydrogen.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/drmr_hydrogen.c b/drmr_hydrogen.c index 2597330..9b7178e 100644 --- a/drmr_hydrogen.c +++ b/drmr_hydrogen.c @@ -459,7 +459,7 @@ drmr_sample* load_hydrogen_kit(char *path, double rate, int *num_samples) { struct hp_info info; struct kit_info kit_info; drmr_sample *samples; - struct instrument_info * cur_i; + struct instrument_info * cur_i, *i_to_free; int i = 0, num_inst = 0; snprintf(buf,BUFSIZ,"%s/drumkit.xml",path); @@ -552,8 +552,18 @@ drmr_sample* load_hydrogen_kit(char *path, double rate, int *num_samples) { } } samples[i].active = 0; - i++; + i_to_free = cur_i; cur_i = cur_i->next; + + if (i_to_free->name) free(i_to_free->name); + if (i_to_free->filename) free(i_to_free->filename); + if (samples[i].layer_count > 0) { + int j; + for(j = 0;j < samples[i].layer_count;j++) + free(i_to_free->layers[j].filename); + } + free(i_to_free); + i++; } if (kit_info.name) free(kit_info.name); *num_samples = num_inst;