From 98d81cf9743cf9f4c37a45670a9b5e97e071b57f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 8 Apr 2021 12:57:23 +0200 Subject: [PATCH] home: use goto to make it clear that variables are initialized gcc-11.0.1-0.3.fc34.x86_64 with -Og was complaining that 'r' might be unitialized. It cannot, but let's rework the code to use a goto instead of conditionalizing on 'call' being unset, which I think is clearer and less error prone. This silences the warning. --- src/home/homed-home.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/home/homed-home.c b/src/home/homed-home.c index d7af14c6c4a..dc9a446c714 100644 --- a/src/home/homed-home.c +++ b/src/home/homed-home.c @@ -2349,6 +2349,8 @@ static int home_dispatch_acquire(Home *h, Operation *o) { assert(o); assert(o->type == OPERATION_ACQUIRE); + assert(!h->current_operation); + switch (home_get_state(h)) { case HOME_UNFIXATED: @@ -2357,8 +2359,9 @@ static int home_dispatch_acquire(Home *h, Operation *o) { break; case HOME_ABSENT: - r = sd_bus_error_setf(&error, BUS_ERROR_HOME_ABSENT, "Home %s is currently missing or not plugged in.", h->user_name); - break; + r = sd_bus_error_setf(&error, BUS_ERROR_HOME_ABSENT, + "Home %s is currently missing or not plugged in.", h->user_name); + goto check; case HOME_INACTIVE: case HOME_DIRTY: @@ -2382,14 +2385,11 @@ static int home_dispatch_acquire(Home *h, Operation *o) { return 0; } - assert(!h->current_operation); - - if (call) { - r = home_ratelimit(h, &error); - if (r >= 0) - r = call(h, o->secret, for_state, &error); - } + r = home_ratelimit(h, &error); + if (r >= 0) + r = call(h, o->secret, for_state, &error); + check: if (r != 0) /* failure or completed */ operation_result(o, r, &error); else /* ongoing */