chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
sd-event: sd_event_run - only return 0 on timeout
[elogind.git]
/
src
/
libsystemd
/
sd-event
/
sd-event.c
diff --git
a/src/libsystemd/sd-event/sd-event.c
b/src/libsystemd/sd-event/sd-event.c
index 2529a86233c247fcb271eedd97b0c4ffa518bac0..376477f275b90ffa6e9c310cd24e704c7dbbe170 100644
(file)
--- a/
src/libsystemd/sd-event/sd-event.c
+++ b/
src/libsystemd/sd-event/sd-event.c
@@
-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);
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);
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;
}
return r;
}