summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOndrej Holy <oholy@redhat.com>2019-07-23 13:25:50 +0200
committerOndrej Holy <oholy@redhat.com>2019-07-23 13:25:50 +0200
commita961ecaa84bab22cbe82a169f8bd913051b8a003 (patch)
treeeb9401cdbdb56d2f168510006178dd8d5ed0858c
parent7920cd388c3584ec2a4477f4b46575b30344d120 (diff)
downloadgvfs-gdata-entry-get-id-fix.tar.gz
google: Remove redundant g_strdup for gdata_entry_get_id resultsgdata-entry-get-id-fix
The additional g_strdup() was needed to prevent segfaults caused by the following issue in libgdata: https://gitlab.gnome.org/GNOME/libgdata/issues/31. TODO: Bump the libgdata dependency accordingly before merge.
-rw-r--r--daemon/gvfsbackendgoogle.c26
1 files changed, 8 insertions, 18 deletions
diff --git a/daemon/gvfsbackendgoogle.c b/daemon/gvfsbackendgoogle.c
index 652b230f..d6c9b5bd 100644
--- a/daemon/gvfsbackendgoogle.c
+++ b/daemon/gvfsbackendgoogle.c
@@ -542,11 +542,10 @@ remove_dir (GVfsBackendGoogle *self,
{
GHashTableIter iter;
GDataEntry *entry;
- gchar *parent_id;
+ const gchar *parent_id;
GList *l;
- /* g_strdup() is necessary to prevent segfault because gdata_entry_get_id() calls g_free() */
- parent_id = g_strdup (gdata_entry_get_id (parent));
+ parent_id = gdata_entry_get_id (parent);
g_hash_table_remove (self->dir_timestamps, parent_id);
@@ -580,8 +579,6 @@ remove_dir (GVfsBackendGoogle *self,
break;
}
}
-
- g_free (parent_id);
}
static gboolean
@@ -615,10 +612,9 @@ rebuild_dir (GVfsBackendGoogle *self,
GDataDocumentsQuery *query = NULL;
gboolean succeeded_once = FALSE;
gchar *search;
- gchar *parent_id;
+ const gchar *parent_id;
- /* g_strdup() is necessary to prevent segfault because gdata_entry_get_id() calls g_free() */
- parent_id = g_strdup (gdata_entry_get_id (parent));
+ parent_id = gdata_entry_get_id (parent);
search = g_strdup_printf ("'%s' in parents", parent_id);
query = gdata_documents_query_new_with_limits (search, 1, MAX_RESULTS);
@@ -671,7 +667,6 @@ rebuild_dir (GVfsBackendGoogle *self,
out:
g_clear_object (&feed);
g_clear_object (&query);
- g_free (parent_id);
}
/* ---------------------------------------------------------------------------------------------------- */
@@ -1427,7 +1422,7 @@ g_vfs_backend_google_enumerate (GVfsBackend *_self,
GError *error;
GHashTableIter iter;
char *parent_path;
- char *id = NULL;
+ const gchar *id = NULL;
g_rec_mutex_lock (&self->mutex);
g_debug ("+ enumerate: %s\n", filename);
@@ -1460,18 +1455,16 @@ g_vfs_backend_google_enumerate (GVfsBackend *_self,
g_vfs_job_succeeded (G_VFS_JOB (job));
- /* g_strdup() is necessary to prevent segfault because gdata_entry_get_id() calls g_free() */
- id = g_strdup (gdata_entry_get_id (entry));
+ id = gdata_entry_get_id (entry);
g_hash_table_iter_init (&iter, self->entries);
while (g_hash_table_iter_next (&iter, NULL, (gpointer *) &entry))
{
DirEntriesKey *k;
GDataEntry *child;
- gchar *child_id;
+ const gchar *child_id;
- /* g_strdup() is necessary to prevent segfault because gdata_entry_get_id() calls g_free() */
- child_id = g_strdup (gdata_entry_get_id (entry));
+ child_id = gdata_entry_get_id (entry);
k = dir_entries_key_new (child_id, id);
if ((child = g_hash_table_lookup (self->dir_entries, k)) != NULL)
@@ -1484,7 +1477,6 @@ g_vfs_backend_google_enumerate (GVfsBackend *_self,
if (g_strcmp0 (child_id, gdata_entry_get_id (child)) != 0)
{
g_debug ("Skipping %s as it is volatile path for %s\n", child_id, gdata_entry_get_id (child));
- g_free (child_id);
dir_entries_key_free (k);
continue;
}
@@ -1498,7 +1490,6 @@ g_vfs_backend_google_enumerate (GVfsBackend *_self,
g_free (entry_path);
}
- g_free (child_id);
dir_entries_key_free (k);
}
@@ -1507,7 +1498,6 @@ g_vfs_backend_google_enumerate (GVfsBackend *_self,
out:
g_debug ("- enumerate\n");
g_free (parent_path);
- g_free (id);
g_rec_mutex_unlock (&self->mutex);
}