[PATCH spice-server] stat-file: Avoid compiler warning

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

 



Some gcc version reports this error:

stat-file.c: In function 'stat_file_add_node':
stat-file.c:180:15: error: 'node' may be used uninitialized in this function
[-Werror=maybe-uninitialized]
     g_strlcpy(node->name, name, sizeof(node->name));
               ^~~~
cc1: all warnings being treated as errors

This warning is a false positive as this loop:
    for (ref = 0; ref <= stat_file->max_nodes; ref++) {
        node = &stat_file->stat->nodes[ref];
        ...
    }
will always iterate at least once.

This patch rewrite the loop in order to make more compilers
understand that the NULL check is useless.

Reported-by: Christophe Fergeau <cfergeau@xxxxxxxxxx>
Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx>
---
 server/stat-file.c | 26 ++++++++++++--------------
 1 file changed, 12 insertions(+), 14 deletions(-)

diff --git a/server/stat-file.c b/server/stat-file.c
index c23f4f5..05ad0ef 100644
--- a/server/stat-file.c
+++ b/server/stat-file.c
@@ -162,25 +162,23 @@ stat_file_add_node(RedStatFile *stat_file, StatNodeRef parent, const char *name,
             return ref;
         }
     }
-    if (stat_file->stat->num_of_nodes >= stat_file->max_nodes || stat_file->stat == NULL) {
-        pthread_mutex_unlock(&stat_file->lock);
-        return INVALID_STAT_REF;
-    }
-    stat_file->stat->generation++;
-    stat_file->stat->num_of_nodes++;
     for (ref = 0; ref <= stat_file->max_nodes; ref++) {
         node = &stat_file->stat->nodes[ref];
-        if (!(node->flags & SPICE_STAT_NODE_FLAG_ENABLED)) {
-            break;
+        if (!!(node->flags & SPICE_STAT_NODE_FLAG_ENABLED)) {
+            continue;
         }
+        stat_file->stat->generation++;
+        stat_file->stat->num_of_nodes++;
+        node->value = 0;
+        node->flags = SPICE_STAT_NODE_FLAG_ENABLED |
+                      (visible ? SPICE_STAT_NODE_FLAG_VISIBLE : 0);
+        g_strlcpy(node->name, name, sizeof(node->name));
+        reds_insert_stat_node(stat_file, parent, ref);
+        pthread_mutex_unlock(&stat_file->lock);
+        return ref;
     }
-    spice_assert(!(node->flags & SPICE_STAT_NODE_FLAG_ENABLED));
-    node->value = 0;
-    node->flags = SPICE_STAT_NODE_FLAG_ENABLED | (visible ? SPICE_STAT_NODE_FLAG_VISIBLE : 0);
-    g_strlcpy(node->name, name, sizeof(node->name));
-    reds_insert_stat_node(stat_file, parent, ref);
     pthread_mutex_unlock(&stat_file->lock);
-    return ref;
+    return INVALID_STAT_REF;
 }
 
 uint64_t *
-- 
2.9.3

_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/spice-devel




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]