sd-event: sd_event_run - only return 0 on timeout

sd_event_dispatch() returns 0 on FINISH, so let's eat that up.
This commit is contained in:
Tom Gundersen 2015-03-14 12:09:20 +01:00
parent 2b0c9ef735
commit 02d30981b1
1 changed files with 14 additions and 6 deletions

View File

@ -2490,15 +2490,23 @@ _public_ int sd_event_run(sd_event *e, uint64_t timeout) {
assert_return(e->state == SD_EVENT_INITIAL, -EBUSY);
r = sd_event_prepare(e);
if (r > 0)
return sd_event_dispatch(e);
else if (r < 0)
if (r > 0) {
r = sd_event_dispatch(e);
if (r < 0)
return r;
else
return 1;
} else if (r < 0)
return r;
r = sd_event_wait(e, timeout);
if (r > 0)
return sd_event_dispatch(e);
else
if (r > 0) {
r = sd_event_dispatch(e);
if (r < 0)
return r;
else
return 1;
} else
return r;
}