]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Avoid doing arithmetic with NULL
authorPhilippe Waroquiers <philippe.waroquiers@skynet.be>
Thu, 11 Sep 2014 19:56:03 +0000 (19:56 +0000)
committerPhilippe Waroquiers <philippe.waroquiers@skynet.be>
Thu, 11 Sep 2014 19:56:03 +0000 (19:56 +0000)
Spotted by Florian Krohm/BEAM

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14515

coregrind/m_deduppoolalloc.c

index d38d7cdf80901befdb0a9cf8bec6683bd4c77083..05e03b60b9f320c3af5eac20cf1bc19755deecc3 100644 (file)
@@ -112,7 +112,7 @@ extern DedupPoolAlloc* VG_(newDedupPA) ( SizeT  poolSzB,
                                    free_fn);
    ddpa->curpool = NULL;
    ddpa->curpool_limit = NULL;
-   ddpa->curpool_free = ddpa->curpool_limit + 1;
+   ddpa->curpool_free = NULL;
    vg_assert(ddpa->pools);
    return ddpa;
 }
@@ -207,7 +207,8 @@ static void print_stats (DedupPoolAlloc *ddpa)
                 (long int) ddpa->nr_alloc_calls,
                 VG_(HT_count_nodes)(ddpa->ht_elements),
                 VG_(sizeXA)(ddpa->pools),
-                (long int) (ddpa->curpool_limit - ddpa->curpool_free + 1));
+                ddpa->curpool ?
+                (long int) (ddpa->curpool_limit - ddpa->curpool_free + 1) : 0);
    VG_(HT_print_stats) (ddpa->ht_elements, cmp_pool_elt);
 }
 
@@ -264,7 +265,8 @@ void* VG_(allocEltDedupPA) (DedupPoolAlloc *ddpa, SizeT eltSzB, const void *elt)
       and insert it in the hash table of inserted elements. */
 
    // Add a new pool or grow pool if not enough space in the current pool
-   if (UNLIKELY(ddpa->curpool_free + eltSzB - 1 > ddpa->curpool_limit)) {
+   if (UNLIKELY(ddpa->curpool_free == NULL
+                || ddpa->curpool_free + eltSzB - 1 > ddpa->curpool_limit)) {
       ddpa_add_new_pool_or_grow (ddpa);
    }