]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
logind-session-dbus: use _cleanup_ 27424/head
authorDavid Tardon <dtardon@redhat.com>
Fri, 21 Apr 2023 13:53:02 +0000 (15:53 +0200)
committerDavid Tardon <dtardon@redhat.com>
Fri, 28 Apr 2023 07:29:04 +0000 (09:29 +0200)
src/login/logind-session-dbus.c
src/login/logind-session-device.h

index e3bebc9188be9d5e818149f51b78a5d6f39583de..bc7d8fdc1c6fede8a06ed3406865ea57b919b74e 100644 (file)
@@ -424,7 +424,7 @@ static int method_set_display(sd_bus_message *message, void *userdata, sd_bus_er
 static int method_take_device(sd_bus_message *message, void *userdata, sd_bus_error *error) {
         Session *s = ASSERT_PTR(userdata);
         uint32_t major, minor;
-        SessionDevice *sd;
+        _cleanup_(session_device_freep) SessionDevice *sd = NULL;
         dev_t dev;
         int r;
 
@@ -456,18 +456,16 @@ static int method_take_device(sd_bus_message *message, void *userdata, sd_bus_er
 
         r = session_device_save(sd);
         if (r < 0)
-                goto error;
+                return r;
 
         r = sd_bus_reply_method_return(message, "hb", sd->fd, !sd->active);
         if (r < 0)
-                goto error;
+                return r;
 
         session_save(s);
-        return 1;
+        TAKE_PTR(sd);
 
-error:
-        session_device_free(sd);
-        return r;
+        return 1;
 }
 
 static int method_release_device(sd_bus_message *message, void *userdata, sd_bus_error *error) {
index a606d84f0efb27f2fa5e87d0046625721485582a..04654d12524aaaea684e80f4b00a9141f7bf596a 100644 (file)
@@ -29,6 +29,8 @@ struct SessionDevice {
 
 int session_device_new(Session *s, dev_t dev, bool open_device, SessionDevice **out);
 SessionDevice *session_device_free(SessionDevice *sd);
+DEFINE_TRIVIAL_CLEANUP_FUNC(SessionDevice*, session_device_free);
+
 void session_device_complete_pause(SessionDevice *sd);
 
 void session_device_resume_all(Session *s);