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:
@ -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 */
|
||||||
|
Reference in New Issue
Block a user