X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Flibsystemd%2Fsd-event%2Fsd-event.c;h=376477f275b90ffa6e9c310cd24e704c7dbbe170;hp=2529a86233c247fcb271eedd97b0c4ffa518bac0;hb=02d30981b1bef116caee26ef3229fb910a88a394;hpb=2b0c9ef7352dae53ee746c32033999c1346633b3 diff --git a/src/libsystemd/sd-event/sd-event.c b/src/libsystemd/sd-event/sd-event.c index 2529a8623..376477f27 100644 --- 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); - 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; }