From b29a5e4ab98f460d2f79a11d1969858640e897e6 Mon Sep 17 00:00:00 2001 From: Alan Jenkins Date: Tue, 21 Oct 2008 11:10:32 +0100 Subject: [PATCH] use more appropriate alternatives to malloc() Use calloc to request cleared memory instead. Kernel and libc conspire to make this more efficient. Also, replace one malloc() + strcpy() with strdup(). Signed-off-by: Alan Jenkins --- extras/collect/collect.c | 3 +-- extras/volume_id/lib/volume_id.c | 3 +-- udev/lib/libudev-ctrl.c | 6 ++---- udev/lib/libudev-device.c | 3 +-- udev/lib/libudev-enumerate.c | 3 +-- udev/lib/libudev-monitor.c | 6 ++---- udev/lib/libudev-queue.c | 3 +-- udev/lib/libudev.c | 3 +-- udev/udev-event.c | 3 +-- udev/udev-rules.c | 3 +-- 10 files changed, 12 insertions(+), 24 deletions(-) diff --git a/extras/collect/collect.c b/extras/collect/collect.c index 355b85b5c..3a7e826e4 100644 --- a/extras/collect/collect.c +++ b/extras/collect/collect.c @@ -171,8 +171,7 @@ static int checkout(int fd) if (debug) fprintf(stderr, "Found word %s\n", word); him = malloc(sizeof (struct _mate)); - him->name = malloc(strlen(word) + 1); - strcpy(him->name, word); + him->name = strdup(word); him->state = STATE_OLD; udev_list_node_append(&him->node, &bunch); word = NULL; diff --git a/extras/volume_id/lib/volume_id.c b/extras/volume_id/lib/volume_id.c index 791be4351..8f22509ca 100644 --- a/extras/volume_id/lib/volume_id.c +++ b/extras/volume_id/lib/volume_id.c @@ -483,10 +483,9 @@ struct volume_id *volume_id_open_fd(int fd) { struct volume_id *id; - id = malloc(sizeof(struct volume_id)); + id = calloc(1, sizeof(struct volume_id)); if (id == NULL) return NULL; - memset(id, 0x00, sizeof(struct volume_id)); id->fd = fd; diff --git a/udev/lib/libudev-ctrl.c b/udev/lib/libudev-ctrl.c index 848f50787..2e15db0be 100644 --- a/udev/lib/libudev-ctrl.c +++ b/udev/lib/libudev-ctrl.c @@ -72,10 +72,9 @@ struct udev_ctrl *udev_ctrl_new_from_socket(struct udev *udev, const char *socke { struct udev_ctrl *uctrl; - uctrl = malloc(sizeof(struct udev_ctrl)); + uctrl = calloc(1, sizeof(struct udev_ctrl)); if (uctrl == NULL) return NULL; - memset(uctrl, 0x00, sizeof(struct udev_ctrl)); uctrl->refcount = 1; uctrl->udev = udev; @@ -213,10 +212,9 @@ struct udev_ctrl_msg *udev_ctrl_receive_msg(struct udev_ctrl *uctrl) struct ucred *cred; char cred_msg[CMSG_SPACE(sizeof(struct ucred))]; - uctrl_msg = malloc(sizeof(struct udev_ctrl_msg)); + uctrl_msg = calloc(1, sizeof(struct udev_ctrl_msg)); if (uctrl_msg == NULL) return NULL; - memset(uctrl_msg, 0x00, sizeof(struct udev_ctrl_msg)); uctrl_msg->refcount = 1; uctrl_msg->uctrl = uctrl; diff --git a/udev/lib/libudev-device.c b/udev/lib/libudev-device.c index b54c7271e..e4cbd8e68 100644 --- a/udev/lib/libudev-device.c +++ b/udev/lib/libudev-device.c @@ -236,10 +236,9 @@ struct udev_device *device_new(struct udev *udev) if (udev == NULL) return NULL; - udev_device = malloc(sizeof(struct udev_device)); + udev_device = calloc(1, sizeof(struct udev_device)); if (udev_device == NULL) return NULL; - memset(udev_device, 0x00, sizeof(struct udev_device)); udev_device->refcount = 1; udev_device->udev = udev; udev_list_init(&udev_device->devlinks_list); diff --git a/udev/lib/libudev-enumerate.c b/udev/lib/libudev-enumerate.c index b35a82d0c..e5a4ccee3 100644 --- a/udev/lib/libudev-enumerate.c +++ b/udev/lib/libudev-enumerate.c @@ -53,10 +53,9 @@ struct udev_enumerate *udev_enumerate_new(struct udev *udev) { struct udev_enumerate *udev_enumerate; - udev_enumerate = malloc(sizeof(struct udev_enumerate)); + udev_enumerate = calloc(1, sizeof(struct udev_enumerate)); if (udev_enumerate == NULL) return NULL; - memset(udev_enumerate, 0x00, (sizeof(struct udev_enumerate))); udev_enumerate->refcount = 1; udev_enumerate->udev = udev; udev_list_init(&udev_enumerate->devices_list); diff --git a/udev/lib/libudev-monitor.c b/udev/lib/libudev-monitor.c index 6c6f4aa7e..7f7f8460c 100644 --- a/udev/lib/libudev-monitor.c +++ b/udev/lib/libudev-monitor.c @@ -67,10 +67,9 @@ struct udev_monitor *udev_monitor_new_from_socket(struct udev *udev, const char return NULL; if (socket_path == NULL) return NULL; - udev_monitor = malloc(sizeof(struct udev_monitor)); + udev_monitor = calloc(1, sizeof(struct udev_monitor)); if (udev_monitor == NULL) return NULL; - memset(udev_monitor, 0x00, sizeof(struct udev_monitor)); udev_monitor->refcount = 1; udev_monitor->udev = udev; @@ -105,10 +104,9 @@ struct udev_monitor *udev_monitor_new_from_netlink(struct udev *udev) if (udev == NULL) return NULL; - udev_monitor = malloc(sizeof(struct udev_monitor)); + udev_monitor = calloc(1, sizeof(struct udev_monitor)); if (udev_monitor == NULL) return NULL; - memset(udev_monitor, 0x00, sizeof(struct udev_monitor)); udev_monitor->refcount = 1; udev_monitor->udev = udev; diff --git a/udev/lib/libudev-queue.c b/udev/lib/libudev-queue.c index f1c69fdb9..ea75f2204 100644 --- a/udev/lib/libudev-queue.c +++ b/udev/lib/libudev-queue.c @@ -45,10 +45,9 @@ struct udev_queue *udev_queue_new(struct udev *udev) if (udev == NULL) return NULL; - udev_queue = malloc(sizeof(struct udev_queue)); + udev_queue = calloc(1, sizeof(struct udev_queue)); if (udev_queue == NULL) return NULL; - memset(udev_queue, 0x00, sizeof(struct udev_queue)); udev_queue->refcount = 1; udev_queue->udev = udev; udev_list_init(&udev_queue->queue_list); diff --git a/udev/lib/libudev.c b/udev/lib/libudev.c index a09aa051b..fcb784580 100644 --- a/udev/lib/libudev.c +++ b/udev/lib/libudev.c @@ -96,10 +96,9 @@ struct udev *udev_new(void) char *config_file; FILE *f; - udev = malloc(sizeof(struct udev)); + udev = calloc(1, sizeof(struct udev)); if (udev == NULL) return NULL; - memset(udev, 0x00, (sizeof(struct udev))); udev->refcount = 1; udev->log_fn = log_stderr; udev->log_priority = LOG_ERR; diff --git a/udev/udev-event.c b/udev/udev-event.c index 007a14ebe..05bb022d1 100644 --- a/udev/udev-event.c +++ b/udev/udev-event.c @@ -34,10 +34,9 @@ struct udev_event *udev_event_new(struct udev_device *dev) { struct udev_event *event; - event = malloc(sizeof(struct udev_event)); + event = calloc(1, sizeof(struct udev_event)); if (event == NULL) return NULL; - memset(event, 0x00, sizeof(struct udev_event)); event->dev = dev; event->udev = udev_device_get_udev(dev); diff --git a/udev/udev-rules.c b/udev/udev-rules.c index 9b2a6ab3e..32eed78d8 100644 --- a/udev/udev-rules.c +++ b/udev/udev-rules.c @@ -1772,10 +1772,9 @@ struct udev_rules *udev_rules_new(struct udev *udev, int resolve_names) struct udev_list_node file_list; struct udev_list_entry *file_loop, *file_tmp; - rules = malloc(sizeof(struct udev_rules)); + rules = calloc(1, sizeof(struct udev_rules)); if (rules == NULL) return rules; - memset(rules, 0x00, sizeof(struct udev_rules)); rules->udev = udev; rules->resolve_names = resolve_names; udev_list_init(&file_list); -- 2.30.2