chiark / gitweb /
event: make sure we keep a reference to all events we dispatch while we do so.
[elogind.git] / src / libsystemd-bus / sd-event.c
index 9c641c9a8ec7e10c08608a0f8e2f74c68d6e9148..97e6db289bfe54b10f738bedbf33fe77c02059d8 100644 (file)
@@ -1614,6 +1614,8 @@ static int source_dispatch(sd_event_source *s) {
                         return r;
         }
 
+        sd_event_source_ref(s);
+
         switch (s->type) {
 
         case SOURCE_IO:
@@ -1645,6 +1647,8 @@ static int source_dispatch(sd_event_source *s) {
                 break;
         }
 
+        sd_event_source_unref(s);
+
         return r;
 }