From: Zbigniew Jędrzejewski-Szmek Date: Thu, 8 Apr 2021 10:57:23 +0000 (+0200) Subject: home: use goto to make it clear that variables are initialized X-Git-Tag: v249-rc1~456^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=98d81cf9743cf9f4c37a45670a9b5e97e071b57f;p=thirdparty%2Fsystemd.git 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. --- 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 */