[pulseaudio-commits] src/modules src/pulsecore

Tanu Kaskinen tanuk at kemper.freedesktop.org
Mon Jul 9 12:24:13 UTC 2018


 src/modules/module-ladspa-sink.c |   14 ++++++--------
 src/pulsecore/macro.h            |    6 ++++++
 2 files changed, 12 insertions(+), 8 deletions(-)

New commits:
commit 1b377d44285747f9fa00fe88b750c7614057d98b
Author: Tanu Kaskinen <tanuk at iki.fi>
Date:   Wed Jul 4 14:25:26 2018 +0300

    ladspa-sink: fix search path
    
    Having a single level macro for stringizing LADSPA_PATH doesn't work,
    because the '#' preprocessor operator doesn't expand any macros in its
    parameter. As a result, we used the string "LADSPA_PATH" as the search
    path, and obviously no plugins were ever found.
    
    This adds a two-level macro in macro.h and uses that to expand and
    stringize LADSPA_PATH.
    
    Bug link: https://bugs.freedesktop.org/show_bug.cgi?id=107078

diff --git a/src/modules/module-ladspa-sink.c b/src/modules/module-ladspa-sink.c
index c654530a..0bde922b 100644
--- a/src/modules/module-ladspa-sink.c
+++ b/src/modules/module-ladspa-sink.c
@@ -1054,15 +1054,13 @@ int pa__init(pa_module*m) {
     u->output = NULL;
     u->ss = ss;
 
-    /* If the LADSPA_PATH environment variable is not set, we use the
-     * LADSPA_PATH preprocessor macro instead. The macro can contain characters
-     * that need to be escaped (especially on Windows backslashes are common).
-     * The "#" preprocessor operator helpfully adds the required escaping while
-     * turning the LADSPA_PATH macro into a string. */
-#define QUOTE_MACRO(x) #x
     if (!(e = getenv("LADSPA_PATH")))
-        e = QUOTE_MACRO(LADSPA_PATH);
-#undef QUOTE_MACRO
+        /* The LADSPA_PATH preprocessor macro isn't a string literal (i.e. it
+         * doesn't contain quotes), because otherwise the build system would
+         * have an extra burden of getting the escaping right (Windows paths
+         * are especially tricky). PA_EXPAND_AND_STRINGIZE does the necessary
+         * escaping. */
+        e = PA_EXPAND_AND_STRINGIZE(LADSPA_PATH);
 
     /* FIXME: This is not exactly thread safe */
     t = pa_xstrdup(lt_dlgetsearchpath());
diff --git a/src/pulsecore/macro.h b/src/pulsecore/macro.h
index dbce5cd0..bb15b7f0 100644
--- a/src/pulsecore/macro.h
+++ b/src/pulsecore/macro.h
@@ -298,6 +298,12 @@ static inline size_t PA_ALIGN(size_t l) {
              ? (-1 - PA_INT_TYPE_MAX(type))                            \
              : (type) 0))
 
+/* The '#' preprocessor operator doesn't expand any macros that are in the
+ * parameter, which is why we need a separate macro for those cases where the
+ * parameter contains a macro that needs expanding. */
+#define PA_STRINGIZE(x) #x
+#define PA_EXPAND_AND_STRINGIZE(x) PA_STRINGIZE(x)
+
 /* We include this at the very last place */
 #include <pulsecore/log.h>
 



More information about the pulseaudio-commits mailing list