diff options
author | waker <wakeroid@gmail.com> | 2011-05-14 16:23:36 +0200 |
---|---|---|
committer | waker <wakeroid@gmail.com> | 2011-05-14 17:20:56 +0200 |
commit | a36ac590553118cbeac7c7e1ccbeb405f1a8bf41 (patch) | |
tree | a94b73bfd8b19a8423cbb54eff5b00c1c26529af /plugins | |
parent | b70237d07ddf2162e5b9deb51738981af109e90d (diff) |
fixed memleaks in converter
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/converter/converter.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/plugins/converter/converter.c b/plugins/converter/converter.c index c16fb2b4..e8047376 100644 --- a/plugins/converter/converter.c +++ b/plugins/converter/converter.c @@ -511,6 +511,26 @@ load_encoder_presets (void) { return 0; } +void +free_encoder_presets (void) { + ddb_encoder_preset_t *p = encoder_presets; + while (p) { + ddb_encoder_preset_t *next = p->next; + if (p->title) { + free (p->title); + } + if (p->ext) { + free (p->ext); + } + if (p->encoder) { + free (p->encoder); + } + free (p); + p = next; + } + encoder_presets = NULL; +} + int load_dsp_presets (void) { ddb_dsp_preset_t *tail = NULL; @@ -541,6 +561,23 @@ load_dsp_presets (void) { return 0; } +void +free_dsp_presets (void) { + ddb_dsp_preset_t *p = dsp_presets; + while (p) { + ddb_dsp_preset_t *next = p->next; + if (p->title) { + free (p->title); + } + if (p->chain) { + deadbeef->dsp_preset_free (p->chain); + } + free (p); + p = next; + } + dsp_presets = NULL; +} + ddb_dsp_preset_t * dsp_preset_get_for_idx (int idx) { ddb_dsp_preset_t *p = dsp_presets; @@ -947,6 +984,8 @@ converter_start (void) { int converter_stop (void) { + free_encoder_presets (); + free_dsp_presets (); return 0; } |