diff --git a/src/Makefile.am b/src/Makefile.am index d7a551e2e..e610db745 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1752,7 +1752,7 @@ module_remap_source_la_LDFLAGS = $(MODULE_LDFLAGS) module_remap_source_la_LIBADD = $(MODULE_LIBADD) module_ladspa_sink_la_SOURCES = modules/module-ladspa-sink.c modules/ladspa.h -module_ladspa_sink_la_CFLAGS = -DLADSPA_PATH=\"$(libdir)/ladspa:/usr/local/lib/ladspa:/usr/lib/ladspa:/usr/local/lib64/ladspa:/usr/lib64/ladspa\" $(AM_CFLAGS) $(SERVER_CFLAGS) +module_ladspa_sink_la_CFLAGS = -DLADSPA_PATH="$(libdir)/ladspa:/usr/local/lib/ladspa:/usr/lib/ladspa:/usr/local/lib64/ladspa:/usr/lib64/ladspa" $(AM_CFLAGS) $(SERVER_CFLAGS) module_ladspa_sink_la_LDFLAGS = $(MODULE_LDFLAGS) module_ladspa_sink_la_LIBADD = $(MODULE_LIBADD) $(LIBLTDL) diff --git a/src/modules/module-ladspa-sink.c b/src/modules/module-ladspa-sink.c index c2c7c85d9..38be12b95 100644 --- a/src/modules/module-ladspa-sink.c +++ b/src/modules/module-ladspa-sink.c @@ -1048,8 +1048,15 @@ 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 = LADSPA_PATH; + e = QUOTE_MACRO(LADSPA_PATH); +#undef QUOTE_MACRO /* FIXME: This is not exactly thread safe */ t = pa_xstrdup(lt_dlgetsearchpath());