ubusd: fix comparison of integers of different signs
authorPetr Štetiar <ynezz@true.cz>
Wed, 11 Dec 2019 09:04:36 +0000 (10:04 +0100)
committerPetr Štetiar <ynezz@true.cz>
Mon, 16 Dec 2019 22:39:16 +0000 (23:39 +0100)
Fixes following clang-9 compiler warning:

 ubusd.c:36:19: error: comparison of integers of different signs: 'uint32_t' (aka 'unsigned int') and 'int' [-Werror,-Wsign-compare]
         if (ub->refcount == ~0) {
             ~~~~~~~~~~~~ ^  ~~

Signed-off-by: Petr Štetiar <ynezz@true.cz>
ubusd.c

diff --git a/ubusd.c b/ubusd.c
index 0f35d3e25d344ea36a3a867ef19370790e715d71..7738f50f97797623d01f4aed8258ac10102f8a63 100644 (file)
--- a/ubusd.c
+++ b/ubusd.c
 
 #include "ubusd.h"
 
+#define USES_EXTERNAL_BUFFER ~0U
+
 static struct ubus_msg_buf *ubus_msg_ref(struct ubus_msg_buf *ub)
 {
        struct ubus_msg_buf *new_ub;
-       if (ub->refcount == ~0) {
+       if (ub->refcount == USES_EXTERNAL_BUFFER) {
                new_ub = ubus_msg_new(ub->data, ub->len, false);
                if (!new_ub)
                        return NULL;
@@ -61,7 +63,7 @@ struct ubus_msg_buf *ubus_msg_new(void *data, int len, bool shared)
        ub->fd = -1;
 
        if (shared) {
-               ub->refcount = ~0;
+               ub->refcount = USES_EXTERNAL_BUFFER;
                ub->data = data;
        } else {
                ub->refcount = 1;
@@ -78,7 +80,7 @@ void ubus_msg_free(struct ubus_msg_buf *ub)
 {
        switch (ub->refcount) {
        case 1:
-       case ~0:
+       case USES_EXTERNAL_BUFFER:
                if (ub->fd >= 0)
                        close(ub->fd);