]> granicus.if.org Git - cgit/commitdiff
ui-stats: cast pointer before checking for zero
authorJohn Keeping <john@keeping.me.uk>
Mon, 8 Feb 2016 14:12:35 +0000 (14:12 +0000)
committerJason A. Donenfeld <Jason@zx2c4.com>
Mon, 8 Feb 2016 17:27:38 +0000 (18:27 +0100)
We abuse the "void *util" field as a counter and recently started to
cast it to a uintptr_t to avoid risking nasal demons by performing
arithmetic on a void pointer.

However, compilers are also known to do "interesting" things if they
know that a pointer is or isn't NULL.  Make this safer by checking if
the counter (after casting) is non-zero rather than checking if the
pointer is non-null.

Signed-off-by: John Keeping <john@keeping.me.uk>
ui-stats.c

index a9c13fd4c5e930278ce784960fb85f9234dd0a81..8cd9178cea85cc909a20bb74cc435a424f252f85 100644 (file)
@@ -184,9 +184,9 @@ static void add_commit(struct string_list *authors, struct commit *commit,
        period->trunc(date);
        tmp = xstrdup(period->pretty(date));
        item = string_list_insert(items, tmp);
-       if (item->util)
-               free(tmp);
        counter = (uintptr_t *)&item->util;
+       if (*counter)
+               free(tmp);
        (*counter)++;
 
        authorstat->total++;