mirror of
https://github.com/systemd/systemd.git
synced 2024-11-01 00:51:24 +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:
parent
3b9e6fb490
commit
98d81cf974
@ -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 */
|
||||
|
Loading…
Reference in New Issue
Block a user