libgimpbase: fix memory leak in gimp_installation_directory().
Argh I should have properly reviewed !392 (commitc264f0b705
). It was leaking the return value of a g_path_get_basename(). (cherry picked from commit1873f0d65c
)
This commit is contained in:
@ -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];
|
||||||
|
Reference in New Issue
Block a user