summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMayank Sharma <mayank8019@gmail.com>2019-07-23 09:51:41 +0530
committerMayank Sharma <mayank8019@gmail.com>2019-07-24 12:25:21 +0530
commit63d97b19af2479fa2219ca87201f9e830b5f31f3 (patch)
tree9a76671ef76c8ab966e2560d01c26e6864f68a5a
parent2a585dba92774c0edd1bbec2477524ebd7ad2b61 (diff)
downloadgvfs-63d97b19af2479fa2219ca87201f9e830b5f31f3.tar.gz
google: Fix crashes when deleting if the file isn't found
Currently in delete operation, if the entry gets resolved but parent resolution fails, the jump to `out` label (while handling error) will cause the existing entry's ref_count to decrease by 1 (since `out` label calls g_object_unref on entry). We fix the issue by removing g_object_unref from `out` label and suitably unreffing the entry.
-rw-r--r--daemon/gvfsbackendgoogle.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/daemon/gvfsbackendgoogle.c b/daemon/gvfsbackendgoogle.c
index 652b230f..dcbdc713 100644
--- a/daemon/gvfsbackendgoogle.c
+++ b/daemon/gvfsbackendgoogle.c
@@ -1392,6 +1392,7 @@ g_vfs_backend_google_delete (GVfsBackend *_self,
sanitize_error (&error);
g_vfs_job_failed_from_error (G_VFS_JOB (job), error);
g_error_free (error);
+ g_object_unref (entry);
goto out;
}
@@ -1403,9 +1404,9 @@ g_vfs_backend_google_delete (GVfsBackend *_self,
insert_entry (self, GDATA_ENTRY (new_entry));
g_hash_table_foreach (self->monitors, emit_delete_event, entry_path);
g_vfs_job_succeeded (G_VFS_JOB (job));
+ g_object_unref (entry);
out:
- g_object_unref (entry);
g_clear_object (&new_entry);
g_free (entry_path);
g_debug ("- delete\n");