As struct udev_event does not have a reference counter.
}
int main(int argc, char *argv[]) {
- _cleanup_(udev_event_unrefp) struct udev_event *event = NULL;
+ _cleanup_(udev_event_freep) struct udev_event *event = NULL;
_cleanup_(udev_device_unrefp) struct udev_device *dev = NULL;
_cleanup_(udev_rules_unrefp) struct udev_rules *rules = NULL;
const char *devpath, *action;
return event;
}
-void udev_event_unref(struct udev_event *event) {
+struct udev_event *udev_event_free(struct udev_event *event) {
void *p;
- if (event == NULL)
- return;
+ if (!event)
+ return NULL;
+
sd_netlink_unref(event->rtnl);
while ((p = hashmap_steal_first_key(event->run_list)))
free(p);
hashmap_free_free_free(event->seclabel_list);
free(event->program_result);
free(event->name);
- free(event);
+
+ return mfree(event);
}
enum subst_type {
/* udev-event.c */
struct udev_event *udev_event_new(struct udev_device *dev);
-void udev_event_unref(struct udev_event *event);
+struct udev_event *udev_event_free(struct udev_event *event);
size_t udev_event_apply_format(struct udev_event *event,
const char *src, char *dest, size_t size,
bool replace_whitespace);
void udev_event_execute_run(struct udev_event *event, usec_t timeout_usec, usec_t timeout_warn_usec);
/* Cleanup functions */
-DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_event*, udev_event_unref);
+DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_event*, udev_event_free);
DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_rules*, udev_rules_unref);
int test_main(int argc, char *argv[], void *userdata) {
_cleanup_(udev_rules_unrefp) struct udev_rules *rules = NULL;
_cleanup_(udev_device_unrefp) struct udev_device *dev = NULL;
- _cleanup_(udev_event_unrefp) struct udev_event *event = NULL;
+ _cleanup_(udev_event_freep) struct udev_event *event = NULL;
struct udev_list_entry *entry;
sigset_t mask, sigmask_orig;
const char *cmd;
write_string_file("/proc/self/oom_score_adj", "0", 0);
for (;;) {
- struct udev_event *udev_event;
+ _cleanup_(udev_event_freep) struct udev_event *udev_event = NULL;
int fd_lock = -1;
assert(dev);
udev_device_unref(dev);
dev = NULL;
- udev_event_unref(udev_event);
-
/* wait for more device messages from main udevd, or term signal */
while (dev == NULL) {
struct epoll_event ev[4];