[PATCH] Use more appropriate alternatives to malloc()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 <alan-jenkins@xxxxxxxxxxxxxx>

diff --git a/extras/collect/collect.c b/extras/collect/collect.c
index 355b85b..3a7e826 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 791be43..8f22509 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 848f507..2e15db0 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 0f793aa..0ae39d6 100644
--- a/udev/lib/libudev-device.c
+++ b/udev/lib/libudev-device.c
@@ -238,10 +238,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 fab9c4d..6942003 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 b9c2f8d..8d78d31 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 60f7209..bbd0641 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 511054a..9cf23c5 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 2559ff7..c8342f5 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 b8aa8ad..07c410d 100644
--- a/udev/udev-rules.c
+++ b/udev/udev-rules.c
@@ -2221,10 +2221,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);


--
To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel]     [Linux DVB]     [Asterisk Internet PBX]     [DCCP]     [Netdev]     [X.org]     [Util Linux NG]     [Fedora Women]     [ALSA Devel]     [Linux USB]

  Powered by Linux