Avoid doing arithmetic with NULL

Spotted by Florian Krohm/BEAM



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14515 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/coregrind/m_deduppoolalloc.c b/coregrind/m_deduppoolalloc.c
index d38d7cd..05e03b6 100644
--- a/coregrind/m_deduppoolalloc.c
+++ b/coregrind/m_deduppoolalloc.c
@@ -112,7 +112,7 @@
                                    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 @@
                 (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 @@
       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);
    }