diff options
Diffstat (limited to 'common/flatpak-dir.c')
-rw-r--r-- | common/flatpak-dir.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/common/flatpak-dir.c b/common/flatpak-dir.c index 6f2b55c4..9fc8920c 100644 --- a/common/flatpak-dir.c +++ b/common/flatpak-dir.c @@ -3099,6 +3099,11 @@ flatpak_deploy_data_get_eol_rebase (GBytes *deploy_data) return flatpak_deploy_data_get_string (deploy_data, "eolr"); } +/*<private> + * flatpak_deploy_data_get_previous_ids: + * + * Returns: (array length=length zero-terminated=1) (transfer container): an array of constant strings + **/ const char ** flatpak_deploy_data_get_previous_ids (GBytes *deploy_data, gsize *length) { @@ -8645,7 +8650,8 @@ flatpak_dir_deploy_update (FlatpakDir *self, g_autofree char *old_active = NULL; const char *old_origin; g_autofree char *commit = NULL; - g_auto(GStrv) previous_ids = NULL; + g_autofree const char **previous_ids = NULL; + g_auto(GStrv) previous_ids_owned = NULL; if (!flatpak_dir_lock (self, &lock, cancellable, error)) @@ -8662,19 +8668,21 @@ flatpak_dir_deploy_update (FlatpakDir *self, old_origin = flatpak_deploy_data_get_origin (old_deploy_data); old_subpaths = flatpak_deploy_data_get_subpaths (old_deploy_data); - previous_ids = g_strdupv ((char **) flatpak_deploy_data_get_previous_ids (old_deploy_data, NULL)); + previous_ids = flatpak_deploy_data_get_previous_ids (old_deploy_data, NULL); if (opt_previous_ids) { - g_auto(GStrv) old_previous_ids = previous_ids; - previous_ids = flatpak_strv_merge (old_previous_ids, (char **) opt_previous_ids); + previous_ids_owned = flatpak_strv_merge ((char **) previous_ids, (char **) opt_previous_ids); + g_clear_pointer (&previous_ids, g_free); } + else + previous_ids_owned = g_strdupv ((char **) previous_ids); if (!flatpak_dir_deploy (self, old_origin, ref, checksum_or_latest, opt_subpaths ? opt_subpaths : old_subpaths, - (const char * const *) previous_ids, + (const char * const *) previous_ids_owned, cancellable, error)) return FALSE; |