gst: Modify behaviour of gst_get_main_executable_path
authorMathieu Duponchelle <mathieu@centricular.com>
Wed, 27 Sep 2017 18:29:06 +0000 (20:29 +0200)
committerMathieu Duponchelle <mathieu@centricular.com>
Wed, 27 Sep 2017 18:59:54 +0000 (20:59 +0200)
To actually return the path of the executable, not its
directory.

https://bugzilla.gnome.org/show_bug.cgi?id=788256

gst/gst.c
gst/gstplugin.c

index 9642ed7..805dd7d 100644 (file)
--- a/gst/gst.c
+++ b/gst/gst.c
@@ -324,17 +324,13 @@ static void
 find_executable_path (void)
 {
   GError *error = NULL;
-  gchar *path;
 
   if (_gst_executable_path)
     return;
 
-  path = g_file_read_link ("/proc/self/exe", &error);
-
-  if (path) {
-    _gst_executable_path = g_path_get_dirname (path);
-    g_free (path);
-  }
+  _gst_executable_path = g_file_read_link ("/proc/self/exe", &error);
+  if (error)
+    g_error_free (error);
 }
 #elif defined(G_OS_WIN32)
 static void
index 18183c3..df47e47 100644 (file)
@@ -1724,13 +1724,17 @@ gst_plugin_ext_dep_get_stat_hash (GstPlugin * plugin, GstPluginDep * dep)
       gchar *full_path;
 
       if (paths_are_relative_to_exe && !g_path_is_absolute (path)) {
+        gchar *appdir;
+
         if (!_gst_executable_path) {
           GST_FIXME_OBJECT (plugin,
               "Path dependency %s relative to executable path but could not retrieve executable path",
               path);
           continue;
         }
-        full_path = g_build_filename (_gst_executable_path, path, NULL);
+        appdir = g_path_get_dirname (_gst_executable_path);
+        full_path = g_build_filename (appdir, path, NULL);
+        g_free (appdir);
       } else {
         full_path = g_strdup (path);
       }