From e5fc9a307d036fe814145a5100bb6bdf28216cc6 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 28 Mar 2018 07:08:54 +0200 Subject: [PATCH] checkpoint: don't let nm_checkpoint_new() fail We already do error checking in nm_checkpoint_manager_create(). No need to split it in two places. Let all error conditions be handled by nm_checkpoint_manager_create() first, and then once we decide all is good, nm_checkpoint_new() can no longer fail. --- src/nm-checkpoint-manager.c | 12 +++++++++--- src/nm-checkpoint.c | 12 ++---------- src/nm-checkpoint.h | 2 +- 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/src/nm-checkpoint-manager.c b/src/nm-checkpoint-manager.c index a88c4a763c..1086a0cb46 100644 --- a/src/nm-checkpoint-manager.c +++ b/src/nm-checkpoint-manager.c @@ -161,6 +161,14 @@ nm_checkpoint_manager_create (NMCheckpointManager *self, } } + if (!devices->len) { + g_set_error_literal (error, + NM_MANAGER_ERROR, + NM_MANAGER_ERROR_INVALID_ARGUMENTS, + "no device available"); + return NULL; + } + if (!NM_FLAGS_HAS (flags, NM_CHECKPOINT_CREATE_FLAG_DESTROY_ALL)) { for (i = 0; i < devices->len; i++) { device = devices->pdata[i]; @@ -175,9 +183,7 @@ nm_checkpoint_manager_create (NMCheckpointManager *self, } } - checkpoint = nm_checkpoint_new (manager, devices, rollback_timeout, flags, error); - if (!checkpoint) - return NULL; + checkpoint = nm_checkpoint_new (manager, devices, rollback_timeout, flags); if (NM_FLAGS_HAS (flags, NM_CHECKPOINT_CREATE_FLAG_DESTROY_ALL)) nm_checkpoint_manager_destroy_all (self); diff --git a/src/nm-checkpoint.c b/src/nm-checkpoint.c index ed70ff4bfd..55968843e1 100644 --- a/src/nm-checkpoint.c +++ b/src/nm-checkpoint.c @@ -495,7 +495,7 @@ nm_checkpoint_init (NMCheckpoint *self) NMCheckpoint * nm_checkpoint_new (NMManager *manager, GPtrArray *devices, guint32 rollback_timeout_s, - NMCheckpointCreateFlags flags, GError **error) + NMCheckpointCreateFlags flags) { NMCheckpoint *self; NMCheckpointPrivate *priv; @@ -505,15 +505,7 @@ nm_checkpoint_new (NMManager *manager, GPtrArray *devices, guint32 rollback_time g_return_val_if_fail (manager, NULL); g_return_val_if_fail (devices, NULL); - g_return_val_if_fail (!error || !*error, NULL); - - if (!devices->len) { - g_set_error_literal (error, - NM_MANAGER_ERROR, - NM_MANAGER_ERROR_INVALID_ARGUMENTS, - "no device available"); - return NULL; - } + g_return_val_if_fail (devices->len > 0, NULL); self = g_object_new (NM_TYPE_CHECKPOINT, NULL); diff --git a/src/nm-checkpoint.h b/src/nm-checkpoint.h index 59490322e3..49783ca533 100644 --- a/src/nm-checkpoint.h +++ b/src/nm-checkpoint.h @@ -48,7 +48,7 @@ typedef struct _NMCheckpointClass NMCheckpointClass; GType nm_checkpoint_get_type (void); NMCheckpoint *nm_checkpoint_new (NMManager *manager, GPtrArray *devices, guint32 rollback_timeout, - NMCheckpointCreateFlags flags, GError **error); + NMCheckpointCreateFlags flags); typedef void (*NMCheckpointTimeoutCallback) (NMCheckpoint *self, gpointer user_data);