]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-event: introduce event_free_signal_data()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 18 Jan 2019 06:16:22 +0000 (15:16 +0900)
committerLennart Poettering <lennart@poettering.net>
Fri, 18 Jan 2019 12:53:43 +0000 (13:53 +0100)
We already have event_free_inotify_data() and event_free_inode_data().

src/libsystemd/sd-event/sd-event.c

index 0030ea5dbe88aa7b3a9f8191ed2a53b964f0a723..04ba7e25746b81c7640310f5782ce18ee99f606d 100644 (file)
@@ -470,6 +470,17 @@ static struct clock_data* event_get_clock_data(sd_event *e, EventSourceType t) {
         }
 }
 
+static void event_free_signal_data(sd_event *e, struct signal_data *d) {
+        assert(e);
+
+        if (!d)
+                return;
+
+        hashmap_remove(e->signal_data, &d->priority);
+        safe_close(d->fd);
+        free(d);
+}
+
 static int event_make_signal_data(
                 sd_event *e,
                 int sig,
@@ -559,11 +570,8 @@ static int event_make_signal_data(
         return 0;
 
 fail:
-        if (added) {
-                d->fd = safe_close(d->fd);
-                hashmap_remove(e->signal_data, &d->priority);
-                free(d);
-        }
+        if (added)
+                event_free_signal_data(e, d);
 
         return r;
 }
@@ -582,11 +590,8 @@ static void event_unmask_signal_data(sd_event *e, struct signal_data *d, int sig
         assert_se(sigdelset(&d->sigset, sig) >= 0);
 
         if (sigisemptyset(&d->sigset)) {
-
                 /* If all the mask is all-zero we can get rid of the structure */
-                hashmap_remove(e->signal_data, &d->priority);
-                safe_close(d->fd);
-                free(d);
+                event_free_signal_data(e, d);
                 return;
         }