Submitted By: Pierre Labastie Date: 2020-05-19 Initial Package Version: 1.1.0 Upstream Status: First patch is committed, second submitted Origin: https://github.com/lxde/menu-cache Description: Fix a memory leak and multiple definitions From 97e5de8682c0c44fe4e6a2df864c5fdf76cd77cc Mon Sep 17 00:00:00 2001 From: Palo Kisa Date: Thu, 30 Nov 2017 11:36:18 +0100 Subject: [PATCH] libmenu-cache: Fix memory leaks --- libmenu-cache/menu-cache.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libmenu-cache/menu-cache.c b/libmenu-cache/menu-cache.c index 5025d72..273b503 100644 --- a/libmenu-cache/menu-cache.c +++ b/libmenu-cache/menu-cache.c @@ -379,11 +379,15 @@ static MenuCacheItem* read_item(GDataInputStream* f, MenuCache* cache, else /* separator */ { item->type = MENU_CACHE_TYPE_SEP; + g_free(line); return item; } } else + { + g_free(line); return NULL; + } item->id = g_strndup( line + 1, len - 1 ); g_free(line); @@ -923,6 +927,7 @@ gboolean menu_cache_item_unref(MenuCacheItem* item) else { MenuCacheApp* app = MENU_CACHE_APP(item); + g_free(app->generic_name); g_free( app->exec ); g_free(app->try_exec); g_free(app->working_dir); From 1ce739649b4d66339a03fc0ec9ee7a2f7c141780 Mon Sep 17 00:00:00 2001 From: Mamoru TASAKA Date: Fri, 24 Jan 2020 13:33:00 +0900 Subject: [PATCH] Support gcc10 compilation gcc10 now defaults to -fno-common, and with gcc10 menu-cache compilation fails like /bin/ld: menu-merge.o:menu-cache-gen/menu-tags.h:167: multiple definition of `DirDirs'; main.o:menu-cache-gen/menu-tags.h:167: first defined here /bin/ld: menu-merge.o:menu-cache-gen/menu-tags.h:164: multiple definition of `AppDirs'; main.o:menu-cache-gen/menu-tags.h:164: first defined here /bin/ld: menu-merge.o:menu-cache-gen/menu-tags.h:52: multiple definition of `menuTag_Layout'; main.o:menu-cache-gen/menu-tags.h:52: first defined here .... This patch fixes compilation with gcc10: properly declaring variables in header with "extern", and also removing some unneeded variables in header files. --- menu-cache-gen/menu-tags.h | 55 ++++++++++++-------------------------- 1 file changed, 17 insertions(+), 38 deletions(-) diff --git a/menu-cache-gen/menu-tags.h b/menu-cache-gen/menu-tags.h index f3fd7d3..f71c0bc 100644 --- a/menu-cache-gen/menu-tags.h +++ b/menu-cache-gen/menu-tags.h @@ -22,38 +22,17 @@ #include #include -FmXmlFileTag menuTag_Menu; -FmXmlFileTag menuTag_AppDir; -FmXmlFileTag menuTag_DefaultAppDirs; -FmXmlFileTag menuTag_DirectoryDir; -FmXmlFileTag menuTag_DefaultDirectoryDirs; -FmXmlFileTag menuTag_Include; -FmXmlFileTag menuTag_Exclude; -FmXmlFileTag menuTag_Filename; -FmXmlFileTag menuTag_Or; -FmXmlFileTag menuTag_And; -FmXmlFileTag menuTag_Not; -FmXmlFileTag menuTag_Category; -FmXmlFileTag menuTag_MergeFile; -FmXmlFileTag menuTag_MergeDir; -FmXmlFileTag menuTag_DefaultMergeDirs; -FmXmlFileTag menuTag_Directory; -FmXmlFileTag menuTag_Name; -FmXmlFileTag menuTag_Deleted; -FmXmlFileTag menuTag_NotDeleted; -FmXmlFileTag menuTag_OnlyUnallocated; -FmXmlFileTag menuTag_NotOnlyUnallocated; -FmXmlFileTag menuTag_All; -FmXmlFileTag menuTag_LegacyDir; -FmXmlFileTag menuTag_KDELegacyDirs; -FmXmlFileTag menuTag_Move; -FmXmlFileTag menuTag_Old; -FmXmlFileTag menuTag_New; -FmXmlFileTag menuTag_Layout; -FmXmlFileTag menuTag_DefaultLayout; -FmXmlFileTag menuTag_Menuname; -FmXmlFileTag menuTag_Separator; -FmXmlFileTag menuTag_Merge; +extern FmXmlFileTag menuTag_AppDir; +extern FmXmlFileTag menuTag_DirectoryDir; +extern FmXmlFileTag menuTag_Include; +extern FmXmlFileTag menuTag_Exclude; +extern FmXmlFileTag menuTag_Filename; +extern FmXmlFileTag menuTag_Or; +extern FmXmlFileTag menuTag_And; +extern FmXmlFileTag menuTag_Not; +extern FmXmlFileTag menuTag_Category; +extern FmXmlFileTag menuTag_All; +extern FmXmlFileTag menuTag_LegacyDir; typedef enum { MERGE_NONE, /* starting value */ @@ -152,19 +131,19 @@ typedef struct { } MenuRule; /* requested language(s) */ -char **languages; +extern char **languages; /* list of menu files to monitor */ -GSList *MenuFiles; +extern GSList *MenuFiles; /* list of menu dirs to monitor */ -GSList *MenuDirs; +extern GSList *MenuDirs; /* list of available app dirs */ -GSList *AppDirs; +extern GSList *AppDirs; /* list of available dir dirs */ -GSList *DirDirs; +extern GSList *DirDirs; /* parse and merge menu files */ MenuMenu *get_merged_menu(const char *file, FmXmlFile **xmlfile, GError **error); @@ -177,7 +156,7 @@ gboolean save_menu_cache(MenuMenu *layout, const char *menuname, const char *fil void _free_layout_items(GList *data); /* verbosity level */ -gint verbose; +extern gint verbose; #define DBG if (verbose) g_debug #define VDBG if (verbose > 1) g_debug