diff --git a/src/udev/udev-event.c b/src/udev/udev-event.c index 840d20beac5..3782d892c2d 100644 --- a/src/udev/udev-event.c +++ b/src/udev/udev-event.c @@ -64,17 +64,13 @@ struct udev_event *udev_event_new(sd_device *dev, usec_t exec_delay_usec, sd_net } struct udev_event *udev_event_free(struct udev_event *event) { - void *p; - if (!event) return NULL; sd_device_unref(event->dev); sd_device_unref(event->dev_db_clone); sd_netlink_unref(event->rtnl); - while ((p = hashmap_steal_first_key(event->run_list))) - free(p); - hashmap_free(event->run_list); + hashmap_free_free_key(event->run_list); hashmap_free_free_free(event->seclabel_list); free(event->program_result); free(event->name); diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c index f6f640a2161..a9fa04dbf04 100644 --- a/src/udev/udev-rules.c +++ b/src/udev/udev-rules.c @@ -2407,12 +2407,8 @@ int udev_rules_apply_to_event( case TK_A_RUN_PROGRAM: { _cleanup_free_ char *cmd = NULL; - if (IN_SET(cur->key.op, OP_ASSIGN, OP_ASSIGN_FINAL)) { - void *p; - - while ((p = hashmap_steal_first_key(event->run_list))) - free(p); - } + if (IN_SET(cur->key.op, OP_ASSIGN, OP_ASSIGN_FINAL)) + hashmap_clear_free_key(event->run_list); r = hashmap_ensure_allocated(&event->run_list, NULL); if (r < 0)