Fix two warnings from Clang's static analyzer.
[tinc] / src / top.c
index 28ab56f..4db9304 100644 (file)
--- a/src/top.c
+++ b/src/top.c
@@ -1,6 +1,6 @@
 /*
     top.c -- Show real-time statistics from a running tincd
-    Copyright (C) 2011-2012 Guus Sliepen <guus@tinc-vpn.org>
+    Copyright (C) 2011-2013 Guus Sliepen <guus@tinc-vpn.org>
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -25,6 +25,7 @@
 
 #include "control_common.h"
 #include "list.h"
+#include "names.h"
 #include "tincctl.h"
 #include "top.h"
 #include "xalloc.h"
@@ -65,10 +66,6 @@ static float bscale = 1;
 static const char *punit = "pkts";
 static float pscale = 1;
 
-#ifndef timersub
-#define timersub(a, b, c) do {(c)->tv_sec = (a)->tv_sec - (b)->tv_sec; (c)->tv_usec = (a)->tv_usec = (b)->tv_usec;} while(0)
-#endif
-
 static void update(int fd) {
        sendline(fd, "%d %d", CONTROL, REQ_DUMP_TRAFFIC);
        gettimeofday(&cur, NULL);
@@ -111,7 +108,7 @@ static void update(int fd) {
                                found = ns;
                                break;
                        } else {
-                               found = xmalloc_and_zero(sizeof *found);
+                               found = xzalloc(sizeof *found);
                                found->name = xstrdup(name);
                                list_insert_before(&node_list, node, found);
                                changed = true;
@@ -120,7 +117,7 @@ static void update(int fd) {
                }
 
                if(!found) {
-                       found = xmalloc_and_zero(sizeof *found);
+                       found = xzalloc(sizeof *found);
                        found->name = xstrdup(name);
                        list_insert_tail(&node_list, found);
                        changed = true;
@@ -216,7 +213,8 @@ static void redraw(void) {
        for(int i = 0; i < n; i++)
                sorted[i]->i = i;
 
-       qsort(sorted, n, sizeof *sorted, sortfunc);
+       if(sorted)
+               qsort(sorted, n, sizeof *sorted, sortfunc);
 
        for(int i = 0, row = 3; i < n; i++, row++) {
                nodestats_t *node = sorted[i];