summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2013-11-19 01:15:31 +0100
committerAnthony G. Basile <blueness@gentoo.org>2014-01-09 15:34:16 -0500
commit7edf99d8905af253236732cf538d2b6d1a0c4243 (patch)
tree0acb27999fe840e9308be337e729e4314514040c
parentfc5bd12597c663380c39d6de3bbef894e6d563f8 (diff)
libudev: always return NULL in _unref() APIs
Returning anything else but NULL would suggest the caller's reference might still be valid, but it isn't, because the caller just invoked _unref() after all. This turns the return value into a typesafe shortcut that allows unreffing and resetting a reference in one line. In contrast to solutions for this which take a pointer to a pointer to accomplish the same this solution is just syntactic sugar the developer can make use of but doesn't have to, and this is particularly useful when immediately unreffing objects returned by function calls. Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
-rw-r--r--src/libudev/libudev-device.c4
-rw-r--r--src/libudev/libudev-enumerate.c4
-rw-r--r--src/libudev/libudev-hwdb.c4
-rw-r--r--src/libudev/libudev-monitor.c4
-rw-r--r--src/libudev/libudev-queue.c4
5 files changed, 10 insertions, 10 deletions
diff --git a/src/libudev/libudev-device.c b/src/libudev/libudev-device.c
index b5b07fc5de..059a590601 100644
--- a/src/libudev/libudev-device.c
+++ b/src/libudev/libudev-device.c
@@ -1090,7 +1090,7 @@ _public_ struct udev_device *udev_device_ref(struct udev_device *udev_device)
* Drop a reference of a udev device. If the refcount reaches zero,
* the resources of the device will be released.
*
- * Returns: the passed udev device if it has still an active reference, or #NULL otherwise.
+ * Returns: #NULL
**/
_public_ struct udev_device *udev_device_unref(struct udev_device *udev_device)
{
@@ -1098,7 +1098,7 @@ _public_ struct udev_device *udev_device_unref(struct udev_device *udev_device)
return NULL;
udev_device->refcount--;
if (udev_device->refcount > 0)
- return udev_device;
+ return NULL;
if (udev_device->parent_device != NULL)
udev_device_unref(udev_device->parent_device);
free(udev_device->syspath);
diff --git a/src/libudev/libudev-enumerate.c b/src/libudev/libudev-enumerate.c
index e71d766c02..48ffe83d36 100644
--- a/src/libudev/libudev-enumerate.c
+++ b/src/libudev/libudev-enumerate.c
@@ -122,7 +122,7 @@ _public_ struct udev_enumerate *udev_enumerate_ref(struct udev_enumerate *udev_e
* Drop a reference of an enumeration context. If the refcount reaches zero,
* all resources of the enumeration context will be released.
*
- * Returns: the passed enumeration context if it has still an active reference, or #NULL otherwise.
+ * Returns: #NULL
**/
_public_ struct udev_enumerate *udev_enumerate_unref(struct udev_enumerate *udev_enumerate)
{
@@ -132,7 +132,7 @@ _public_ struct udev_enumerate *udev_enumerate_unref(struct udev_enumerate *udev
return NULL;
udev_enumerate->refcount--;
if (udev_enumerate->refcount > 0)
- return udev_enumerate;
+ return NULL;
udev_list_cleanup(&udev_enumerate->sysattr_match_list);
udev_list_cleanup(&udev_enumerate->sysattr_nomatch_list);
udev_list_cleanup(&udev_enumerate->subsystem_match_list);
diff --git a/src/libudev/libudev-hwdb.c b/src/libudev/libudev-hwdb.c
index 335f5b775a..9368600b25 100644
--- a/src/libudev/libudev-hwdb.c
+++ b/src/libudev/libudev-hwdb.c
@@ -334,14 +334,14 @@ _public_ struct udev_hwdb *udev_hwdb_ref(struct udev_hwdb *hwdb) {
* Drop a reference of a hwdb context. If the refcount reaches zero,
* all resources of the hwdb context will be released.
*
- * Returns: the passed hwdb context if it has still an active reference, or #NULL otherwise.
+ * Returns: #NULL
**/
_public_ struct udev_hwdb *udev_hwdb_unref(struct udev_hwdb *hwdb) {
if (!hwdb)
return NULL;
hwdb->refcount--;
if (hwdb->refcount > 0)
- return hwdb;
+ return NULL;
if (hwdb->map)
munmap((void *)hwdb->map, hwdb->st.st_size);
if (hwdb->f)
diff --git a/src/libudev/libudev-monitor.c b/src/libudev/libudev-monitor.c
index 91f6a0806a..853705e4f8 100644
--- a/src/libudev/libudev-monitor.c
+++ b/src/libudev/libudev-monitor.c
@@ -408,7 +408,7 @@ _public_ struct udev_monitor *udev_monitor_ref(struct udev_monitor *udev_monitor
* the bound socket will be closed, and the resources of the monitor
* will be released.
*
- * Returns: the passed udev monitor if it has still an active reference, or #NULL otherwise.
+ * Returns: #NULL
**/
_public_ struct udev_monitor *udev_monitor_unref(struct udev_monitor *udev_monitor)
{
@@ -416,7 +416,7 @@ _public_ struct udev_monitor *udev_monitor_unref(struct udev_monitor *udev_monit
return NULL;
udev_monitor->refcount--;
if (udev_monitor->refcount > 0)
- return udev_monitor;
+ return NULL;
if (udev_monitor->sock >= 0)
close(udev_monitor->sock);
udev_list_cleanup(&udev_monitor->filter_subsystem_list);
diff --git a/src/libudev/libudev-queue.c b/src/libudev/libudev-queue.c
index 0dd20313d9..f67dba9958 100644
--- a/src/libudev/libudev-queue.c
+++ b/src/libudev/libudev-queue.c
@@ -101,7 +101,7 @@ _public_ struct udev_queue *udev_queue_ref(struct udev_queue *udev_queue)
* Drop a reference of a udev queue context. If the refcount reaches zero,
* the resources of the queue context will be released.
*
- * Returns: the passed queue context if it has still an active reference, or #NULL otherwise.
+ * Returns: #NULL
**/
_public_ struct udev_queue *udev_queue_unref(struct udev_queue *udev_queue)
{
@@ -109,7 +109,7 @@ _public_ struct udev_queue *udev_queue_unref(struct udev_queue *udev_queue)
return NULL;
udev_queue->refcount--;
if (udev_queue->refcount > 0)
- return udev_queue;
+ return NULL;
udev_list_cleanup(&udev_queue->queue_list);
free(udev_queue);
return NULL;