From f5310ca51eaf2794f07c4309672e4b3a51eb827f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beat=20K=C3=BCng?= Date: Mon, 6 Jun 2016 15:49:06 +0200 Subject: [PATCH] orb: avoid unnecessary string duplication of objname --- src/modules/uORB/uORBDevices_nuttx.cpp | 10 +--------- src/modules/uORB/uORBDevices_posix.cpp | 10 +--------- 2 files changed, 2 insertions(+), 18 deletions(-) diff --git a/src/modules/uORB/uORBDevices_nuttx.cpp b/src/modules/uORB/uORBDevices_nuttx.cpp index e0f51469a5..7ae8e3a1ce 100644 --- a/src/modules/uORB/uORBDevices_nuttx.cpp +++ b/src/modules/uORB/uORBDevices_nuttx.cpp @@ -673,18 +673,12 @@ uORB::DeviceMaster::ioctl(struct file *filp, int cmd, unsigned long arg) *(adv->instance) = group_tries; } - /* driver wants a permanent copy of the node name, so make one here */ - objname = strdup(meta->o_name); - - if (objname == nullptr) { - return -ENOMEM; - } + objname = meta->o_name; //no need for a copy, meta->o_name will never be freed or changed /* driver wants a permanent copy of the path, so make one here */ devpath = strdup(nodepath); if (devpath == nullptr) { - free((void *)objname); return -ENOMEM; } @@ -693,7 +687,6 @@ uORB::DeviceMaster::ioctl(struct file *filp, int cmd, unsigned long arg) /* if we didn't get a device, that's bad */ if (node == nullptr) { - free((void *)objname); free((void *)devpath); return -ENOMEM; } @@ -720,7 +713,6 @@ uORB::DeviceMaster::ioctl(struct file *filp, int cmd, unsigned long arg) } /* also discard the name now */ - free((void *)objname); free((void *)devpath); } else { diff --git a/src/modules/uORB/uORBDevices_posix.cpp b/src/modules/uORB/uORBDevices_posix.cpp index d828431c56..ac936e45e9 100644 --- a/src/modules/uORB/uORBDevices_posix.cpp +++ b/src/modules/uORB/uORBDevices_posix.cpp @@ -679,18 +679,12 @@ uORB::DeviceMaster::ioctl(device::file_t *filp, int cmd, unsigned long arg) *(adv->instance) = group_tries; } - /* driver wants a permanent copy of the node name, so make one here */ - objname = strdup(meta->o_name); - - if (objname == nullptr) { - return -ENOMEM; - } + objname = meta->o_name; //no need for a copy, meta->o_name will never be freed or changed /* driver wants a permanent copy of the path, so make one here */ devpath = strdup(nodepath); if (devpath == nullptr) { - free((void *)objname); return -ENOMEM; } @@ -699,7 +693,6 @@ uORB::DeviceMaster::ioctl(device::file_t *filp, int cmd, unsigned long arg) /* if we didn't get a device, that's bad */ if (node == nullptr) { - free((void *)objname); free((void *)devpath); return -ENOMEM; } @@ -726,7 +719,6 @@ uORB::DeviceMaster::ioctl(device::file_t *filp, int cmd, unsigned long arg) } /* also discard the name now */ - free((void *)objname); free((void *)devpath); } else {