libgimpbase: fix memory leak in gimp_installation_directory().

Argh I should have properly reviewed !392 (commit c264f0b705).
It was leaking the return value of a g_path_get_basename().

(cherry picked from commit 1873f0d65c)
This commit is contained in:
Jehan
2021-01-19 12:04:53 +01:00
parent 8f38cb9900
commit 603cc117b9

View File

@ -400,6 +400,7 @@ gimp_installation_directory (void)
NSAutoreleasePool *pool; NSAutoreleasePool *pool;
NSString *resource_path; NSString *resource_path;
gchar *basename; gchar *basename;
gchar *basepath;
gchar *dirname; gchar *dirname;
pool = [[NSAutoreleasePool alloc] init]; pool = [[NSAutoreleasePool alloc] init];
@ -407,7 +408,8 @@ gimp_installation_directory (void)
resource_path = [[NSBundle mainBundle] resourcePath]; resource_path = [[NSBundle mainBundle] resourcePath];
basename = g_path_get_basename ([resource_path UTF8String]); basename = g_path_get_basename ([resource_path UTF8String]);
dirname = g_path_get_dirname ([resource_path UTF8String]); basepath = g_path_get_dirname ([resource_path UTF8String]);
dirname = g_path_get_basename (basepath);
if (! strcmp (basename, ".libs")) if (! strcmp (basename, ".libs"))
{ {
@ -421,13 +423,13 @@ gimp_installation_directory (void)
* path is the directory which contains the executable * path is the directory which contains the executable
*/ */
toplevel = g_strdup (dirname); toplevel = g_strdup (basepath);
} }
else if (! strcmp (basename, "plug-ins")) else if (! strcmp (basename, "plug-ins"))
{ {
/* same for plug-ins, go three levels up from prefix/lib/gimp/x.y */ /* same for plug-ins, go three levels up from prefix/lib/gimp/x.y */
gchar *tmp = g_path_get_dirname (dirname); gchar *tmp = g_path_get_dirname (basepath);
gchar *tmp2 = g_path_get_dirname (tmp); gchar *tmp2 = g_path_get_dirname (tmp);
toplevel = g_path_get_dirname (tmp2); toplevel = g_path_get_dirname (tmp2);
@ -435,11 +437,11 @@ gimp_installation_directory (void)
g_free (tmp); g_free (tmp);
g_free (tmp2); g_free (tmp2);
} }
else if (! strcmp (g_path_get_basename (dirname), "plug-ins")) else if (! strcmp (dirname, "plug-ins"))
{ {
/* same for plug-ins in subdirectory, go three levels up from prefix/lib/gimp/x.y */ /* same for plug-ins in subdirectory, go three levels up from prefix/lib/gimp/x.y */
gchar *tmp = g_path_get_dirname (dirname); gchar *tmp = g_path_get_dirname (basepath);
gchar *tmp2 = g_path_get_dirname (tmp); gchar *tmp2 = g_path_get_dirname (tmp);
gchar *tmp3 = g_path_get_dirname (tmp2); gchar *tmp3 = g_path_get_dirname (tmp2);
@ -457,6 +459,7 @@ gimp_installation_directory (void)
} }
g_free (basename); g_free (basename);
g_free (basepath);
g_free (dirname); g_free (dirname);
[pool drain]; [pool drain];