sd-event: use _cleanup_ to manage temporary references
This commit is contained in:
parent
1e9f0ccadf
commit
30dd293c88
|
@ -2403,6 +2403,7 @@ static int event_prepare(sd_event *e) {
|
|||
|
||||
static int dispatch_exit(sd_event *e) {
|
||||
sd_event_source *p;
|
||||
_cleanup_(sd_event_unrefp) sd_event *ref = NULL;
|
||||
int r;
|
||||
|
||||
assert(e);
|
||||
|
@ -2413,15 +2414,11 @@ static int dispatch_exit(sd_event *e) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
sd_event_ref(e);
|
||||
ref = sd_event_ref(e);
|
||||
e->iteration++;
|
||||
e->state = SD_EVENT_EXITING;
|
||||
|
||||
r = source_dispatch(p);
|
||||
|
||||
e->state = SD_EVENT_INITIAL;
|
||||
sd_event_unref(e);
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
|
@ -2661,14 +2658,12 @@ _public_ int sd_event_dispatch(sd_event *e) {
|
|||
|
||||
p = event_next_pending(e);
|
||||
if (p) {
|
||||
sd_event_ref(e);
|
||||
_cleanup_(sd_event_unrefp) sd_event *ref = NULL;
|
||||
|
||||
ref = sd_event_ref(e);
|
||||
e->state = SD_EVENT_RUNNING;
|
||||
r = source_dispatch(p);
|
||||
e->state = SD_EVENT_INITIAL;
|
||||
|
||||
sd_event_unref(e);
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
|
@ -2735,6 +2730,7 @@ _public_ int sd_event_run(sd_event *e, uint64_t timeout) {
|
|||
}
|
||||
|
||||
_public_ int sd_event_loop(sd_event *e) {
|
||||
_cleanup_(sd_event_unrefp) sd_event *ref = NULL;
|
||||
int r;
|
||||
|
||||
assert_return(e, -EINVAL);
|
||||
|
@ -2742,19 +2738,15 @@ _public_ int sd_event_loop(sd_event *e) {
|
|||
assert_return(!event_pid_changed(e), -ECHILD);
|
||||
assert_return(e->state == SD_EVENT_INITIAL, -EBUSY);
|
||||
|
||||
sd_event_ref(e);
|
||||
ref = sd_event_ref(e);
|
||||
|
||||
while (e->state != SD_EVENT_FINISHED) {
|
||||
r = sd_event_run(e, (uint64_t) -1);
|
||||
if (r < 0)
|
||||
goto finish;
|
||||
return r;
|
||||
}
|
||||
|
||||
r = e->exit_code;
|
||||
|
||||
finish:
|
||||
sd_event_unref(e);
|
||||
return r;
|
||||
return e->exit_code;
|
||||
}
|
||||
|
||||
_public_ int sd_event_get_fd(sd_event *e) {
|
||||
|
|
Loading…
Reference in New Issue