1
0
mirror of https://github.com/systemd/systemd.git synced 2025-08-24 09:49:49 +03:00

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.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2021-04-08 12:57:23 +02:00
parent 3b9e6fb490
commit 98d81cf974

View File

@ -2349,6 +2349,8 @@ static int home_dispatch_acquire(Home *h, Operation *o) {
assert(o); assert(o);
assert(o->type == OPERATION_ACQUIRE); assert(o->type == OPERATION_ACQUIRE);
assert(!h->current_operation);
switch (home_get_state(h)) { switch (home_get_state(h)) {
case HOME_UNFIXATED: case HOME_UNFIXATED:
@ -2357,8 +2359,9 @@ static int home_dispatch_acquire(Home *h, Operation *o) {
break; break;
case HOME_ABSENT: 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); r = sd_bus_error_setf(&error, BUS_ERROR_HOME_ABSENT,
break; "Home %s is currently missing or not plugged in.", h->user_name);
goto check;
case HOME_INACTIVE: case HOME_INACTIVE:
case HOME_DIRTY: case HOME_DIRTY:
@ -2382,14 +2385,11 @@ static int home_dispatch_acquire(Home *h, Operation *o) {
return 0; return 0;
} }
assert(!h->current_operation);
if (call) {
r = home_ratelimit(h, &error); r = home_ratelimit(h, &error);
if (r >= 0) if (r >= 0)
r = call(h, o->secret, for_state, &error); r = call(h, o->secret, for_state, &error);
}
check:
if (r != 0) /* failure or completed */ if (r != 0) /* failure or completed */
operation_result(o, r, &error); operation_result(o, r, &error);
else /* ongoing */ else /* ongoing */