From aa21cf4d7c9bbfd35a46383985b1fe41acb8bf49 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Tue, 13 Dec 2005 14:25:13 +0000 Subject: [PATCH] ladspa plugin - SIGSEGV fix when label is not specified --- src/pcm/pcm_ladspa.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/pcm/pcm_ladspa.c b/src/pcm/pcm_ladspa.c index d8cebe51..28c3402b 100644 --- a/src/pcm/pcm_ladspa.c +++ b/src/pcm/pcm_ladspa.c @@ -1100,18 +1100,20 @@ static int snd_pcm_ladspa_check_file(snd_pcm_ladspa_plugin_t * const plugin, #else char *labellocale; struct lconv *lc; - lc = localeconv (); - labellocale = malloc (strlen (label) + 1); - if (labellocale == NULL) - return -ENOMEM; - strcpy (labellocale, label); - if (strrchr(labellocale, '.')) - *strrchr (labellocale, '.') = *lc->decimal_point; - if (strcmp(label, d->Label) && strcmp(labellocale, d->Label)) { - free(labellocale); - continue; + if (label != NULL) { + lc = localeconv (); + labellocale = malloc (strlen (label) + 1); + if (labellocale == NULL) + return -ENOMEM; + strcpy (labellocale, label); + if (strrchr(labellocale, '.')) + *strrchr (labellocale, '.') = *lc->decimal_point; + if (strcmp(label, d->Label) && strcmp(labellocale, d->Label)) { + free(labellocale); + continue; + } + free (labellocale); } - free (labellocale); #endif if (ladspa_id > 0 && d->UniqueID != ladspa_id) continue; -- 2.11.0