From 28bf718658008ca52303d9066f21a8781a9008ff Mon Sep 17 00:00:00 2001 From: Patrick Storz Date: Fri, 14 Jun 2019 22:53:04 +0200 Subject: append_inkscape_datadir: Canonicalize inkscape_datadir separately g_canonicalize_filename() needs the second parameter to be absolute which INKSCAPE_DATADIR is not guaranteed to be (e.g. when supplied via environment variable). (follow up to 812f50f709384d6c59587c9f1706e401600291a6) --- src/path-prefix.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'src/path-prefix.cpp') diff --git a/src/path-prefix.cpp b/src/path-prefix.cpp index c447bb562..f03c5cb8e 100644 --- a/src/path-prefix.cpp +++ b/src/path-prefix.cpp @@ -37,18 +37,30 @@ char *append_inkscape_datadir(const char *relative_path) { static gchar const *inkscape_datadir; if (!inkscape_datadir) { + gchar *datadir; gchar const *datadir_env = g_getenv("INKSCAPE_DATADIR"); if (datadir_env) { - inkscape_datadir = g_strdup(datadir_env); + datadir = g_strdup(datadir_env); } else { #ifdef _WIN32 gchar *module_path = g_win32_get_package_installation_directory_of_module(NULL); - inkscape_datadir = g_build_filename(module_path, "share", NULL); + datadir = g_build_filename(module_path, "share", NULL); g_free(module_path); #else - inkscape_datadir = INKSCAPE_DATADIR; + datadir = g_strdup(INKSCAPE_DATADIR); #endif } + +#if GLIB_CHECK_VERSION(2,58,0) + inkscape_datadir = g_canonicalize_filename(datadir, NULL); + g_free(datadir); +#else + inkscape_datadir = datadir; +#endif + } + + if (!relative_path) { + relative_path = ""; } #if GLIB_CHECK_VERSION(2,58,0) -- cgit v1.2.3