diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2023-04-28 18:46:36 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-28 18:46:36 +0900 |
commit | 75fd8ad0083cc3542367ee44efa70258c29aecc8 (patch) | |
tree | f2df1ae517241c9c5fa561bd9ad691d38b8d1e08 /src/login | |
parent | c63dde809951496a5e9c5a568aadfb9cad95e5e5 (diff) | |
parent | 360179ea4621a65e9993782bfe28ac4168a7e254 (diff) | |
download | systemd-75fd8ad0083cc3542367ee44efa70258c29aecc8.tar.gz |
Merge pull request #27424 from dtardon/auto-cleanup
More automatic cleanup
Diffstat (limited to 'src/login')
-rw-r--r-- | src/login/logind-button.c | 8 | ||||
-rw-r--r-- | src/login/logind-button.h | 2 | ||||
-rw-r--r-- | src/login/logind-core.c | 10 | ||||
-rw-r--r-- | src/login/logind-session-dbus.c | 12 | ||||
-rw-r--r-- | src/login/logind-session-device.c | 8 | ||||
-rw-r--r-- | src/login/logind-session-device.h | 4 | ||||
-rw-r--r-- | src/login/logind.c | 10 |
7 files changed, 27 insertions, 27 deletions
diff --git a/src/login/logind-button.c b/src/login/logind-button.c index 727dad0b16..7f95fa7a4f 100644 --- a/src/login/logind-button.c +++ b/src/login/logind-button.c @@ -53,8 +53,9 @@ Button* button_new(Manager *m, const char *name) { return b; } -void button_free(Button *b) { - assert(b); +Button *button_free(Button *b) { + if (!b) + return NULL; hashmap_remove(b->manager->buttons, b->name); @@ -65,7 +66,8 @@ void button_free(Button *b) { free(b->name); free(b->seat); - free(b); + + return mfree(b); } int button_set_seat(Button *b, const char *sn) { diff --git a/src/login/logind-button.h b/src/login/logind-button.h index 041d66521c..6c39471fb4 100644 --- a/src/login/logind-button.h +++ b/src/login/logind-button.h @@ -20,7 +20,7 @@ struct Button { }; Button* button_new(Manager *m, const char *name); -void button_free(Button *b); +Button *button_free(Button *b); int button_open(Button *b); int button_set_seat(Button *b, const char *sn); int button_check_switches(Button *b); diff --git a/src/login/logind-core.c b/src/login/logind-core.c index 8e1c54dbe2..dd4b246893 100644 --- a/src/login/logind-core.c +++ b/src/login/logind-core.c @@ -323,15 +323,11 @@ int manager_process_button_device(Manager *m, sd_device *d) { return r; if (device_for_action(d, SD_DEVICE_REMOVE) || - sd_device_has_current_tag(d, "power-switch") <= 0) { + sd_device_has_current_tag(d, "power-switch") <= 0) - b = hashmap_get(m->buttons, sysname); - if (!b) - return 0; - - button_free(b); + button_free(hashmap_get(m->buttons, sysname)); - } else { + else { const char *sn; r = manager_add_button(m, sysname, &b); diff --git a/src/login/logind-session-dbus.c b/src/login/logind-session-dbus.c index 00a0e8fd58..53a9673133 100644 --- a/src/login/logind-session-dbus.c +++ b/src/login/logind-session-dbus.c @@ -460,7 +460,7 @@ static int method_set_tty(sd_bus_message *message, void *userdata, sd_bus_error 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; @@ -492,18 +492,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) { diff --git a/src/login/logind-session-device.c b/src/login/logind-session-device.c index a8b3b48992..9743cd570c 100644 --- a/src/login/logind-session-device.c +++ b/src/login/logind-session-device.c @@ -375,8 +375,9 @@ error: return r; } -void session_device_free(SessionDevice *sd) { - assert(sd); +SessionDevice *session_device_free(SessionDevice *sd) { + if (!sd) + return NULL; /* Make sure to remove the pushed fd. */ if (sd->pushed_fd) @@ -391,7 +392,8 @@ void session_device_free(SessionDevice *sd) { hashmap_remove(sd->session->devices, &sd->dev); free(sd->node); - free(sd); + + return mfree(sd); } void session_device_complete_pause(SessionDevice *sd) { diff --git a/src/login/logind-session-device.h b/src/login/logind-session-device.h index 4da3fe6533..04654d1252 100644 --- a/src/login/logind-session-device.h +++ b/src/login/logind-session-device.h @@ -28,7 +28,9 @@ struct SessionDevice { }; int session_device_new(Session *s, dev_t dev, bool open_device, SessionDevice **out); -void session_device_free(SessionDevice *sd); +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); diff --git a/src/login/logind.c b/src/login/logind.c index a0d6cb3a27..cfb3ef500c 100644 --- a/src/login/logind.c +++ b/src/login/logind.c @@ -40,11 +40,11 @@ #include "udev-util.h" #include "user-util.h" -static Manager* manager_unref(Manager *m); -DEFINE_TRIVIAL_CLEANUP_FUNC(Manager*, manager_unref); +static Manager* manager_free(Manager *m); +DEFINE_TRIVIAL_CLEANUP_FUNC(Manager*, manager_free); static int manager_new(Manager **ret) { - _cleanup_(manager_unrefp) Manager *m = NULL; + _cleanup_(manager_freep) Manager *m = NULL; int r; assert(ret); @@ -102,7 +102,7 @@ static int manager_new(Manager **ret) { return 0; } -static Manager* manager_unref(Manager *m) { +static Manager* manager_free(Manager *m) { Session *session; User *u; Device *d; @@ -1177,7 +1177,7 @@ static int manager_run(Manager *m) { } static int run(int argc, char *argv[]) { - _cleanup_(manager_unrefp) Manager *m = NULL; + _cleanup_(manager_freep) Manager *m = NULL; _unused_ _cleanup_(notify_on_cleanup) const char *notify_message = NULL; int r; |