chiark / gitweb /
event: clear pending-state when re-arming timers
[elogind.git] / src / libsystemd-bus / sd-event.c
index 8025d24bb7e34d1f0c0b3e7b1b6e7d7dc0c651d6..d01e82d94560695764f41a356fb5eef85ebd9681 100644 (file)
@@ -1241,6 +1241,7 @@ _public_ int sd_event_source_set_time(sd_event_source *s, uint64_t usec) {
                 return 0;
 
         s->time.next = usec;
+        source_set_pending(s, false);
 
         if (s->type == SOURCE_REALTIME) {
                 prioq_reshuffle(s->event->realtime_earliest, s, &s->time.earliest_index);
@@ -1906,8 +1907,12 @@ _public_ int sd_event_default(sd_event **ret) {
 _public_ int sd_event_get_tid(sd_event *e, pid_t *tid) {
         assert_return(e, -EINVAL);
         assert_return(tid, -EINVAL);
-        assert_return(e->tid != 0, -ENXIO);
+        assert_return(!event_pid_changed(e), -ECHILD);
 
-        *tid = e->tid;
-        return 0;
+        if (e->tid != 0) {
+                *tid = e->tid;
+                return 0;
+        }
+
+        return -ENXIO;
 }