[gnome-software] flatpak: Ensure apps being used are GsFlatpakApps
- From: Joaquim Manuel Pereira Rocha <jrocha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software] flatpak: Ensure apps being used are GsFlatpakApps
- Date: Tue, 5 Sep 2017 10:28:43 +0000 (UTC)
commit fdbf0470718e6ffd9329f907986822f51a3c72ff
Author: Joaquim Rocha <jrocha endlessm com>
Date: Tue Sep 5 12:05:54 2017 +0200
flatpak: Ensure apps being used are GsFlatpakApps
This patch checks if the apps in use are GsFlatpakApps since apparently
under certain conditions plain GsApp objects were being given to
the Flatpak plugin and, when using them as GsFlatpakApps, it would
segfault.
plugins/flatpak/gs-flatpak.c | 12 +++++++++---
plugins/flatpak/gs-plugin-flatpak.c | 6 ++----
2 files changed, 11 insertions(+), 7 deletions(-)
---
diff --git a/plugins/flatpak/gs-flatpak.c b/plugins/flatpak/gs-flatpak.c
index 8bb4659..fd32471 100644
--- a/plugins/flatpak/gs-flatpak.c
+++ b/plugins/flatpak/gs-flatpak.c
@@ -127,10 +127,16 @@ gs_flatpak_create_app (GsFlatpak *self, FlatpakRef *xref)
app = gs_plugin_app_new (self->plugin, id);
gs_flatpak_set_metadata (self, app, xref);
- /* we already have one, returned the ref'd cached copy */
+ /* we already have one and it's a Flatpak app, return the ref'd cached copy */
app_cached = gs_plugin_cache_lookup (self->plugin, gs_app_get_unique_id (app));
- if (app_cached != NULL)
- return app_cached;
+ if (app_cached != NULL) {
+ if (GS_IS_FLATPAK_APP (app_cached)) {
+ return app_cached;
+ } else {
+ g_warning ("Found cached app in Flatpak plugin that is not a Flatpak app: %s; ",
+ gs_app_get_unique_id (app_cached));
+ }
+ }
/* fallback values */
if (gs_app_get_kind (app) == AS_APP_KIND_RUNTIME) {
diff --git a/plugins/flatpak/gs-plugin-flatpak.c b/plugins/flatpak/gs-plugin-flatpak.c
index ecfb318..7827f3b 100644
--- a/plugins/flatpak/gs-plugin-flatpak.c
+++ b/plugins/flatpak/gs-plugin-flatpak.c
@@ -281,11 +281,9 @@ gs_plugin_flatpak_get_handler (GsPlugin *plugin, GsApp *app)
GsPluginData *priv = gs_plugin_get_data (plugin);
const gchar *object_id;
- /* only process this app if was created by this plugin */
- if (g_strcmp0 (gs_app_get_management_plugin (app),
- gs_plugin_get_name (plugin)) != 0) {
+ /* only process this app if it is a Flatpak app */
+ if (!GS_IS_FLATPAK_APP (app))
return NULL;
- }
/* specified an explicit name */
object_id = gs_flatpak_app_get_object_id (app);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]