Fix chunk accounting related to triggering gdump profiles.

Fix in place huge reallocation to update the chunk counters that are
used for triggering gdump profiles.
diff --git a/ChangeLog b/ChangeLog
index 68dedfa..a939094 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -23,6 +23,7 @@
     to avoid unfortunate interactions during fork(2).  (@jasone)
 
   Bug fixes:
+  - Fix chunk accounting related to triggering gdump profiles.  (@jasone)
   - Link against librt for clock_gettime(2) if glibc < 2.17.  (@jasone)
   - Scale leak report summary according to sampling probability.  (@jasone)
 
diff --git a/src/huge.c b/src/huge.c
index 0bf6162..ba08368 100644
--- a/src/huge.c
+++ b/src/huge.c
@@ -24,6 +24,15 @@
 }
 
 static void
+huge_node_reset(tsdn_t *tsdn, const void *ptr, extent_node_t *node)
+{
+	bool err;
+
+	err = huge_node_set(tsdn, ptr, node);
+	assert(!err);
+}
+
+static void
 huge_node_unset(const void *ptr, const extent_node_t *node)
 {
 
@@ -162,8 +171,10 @@
 
 	malloc_mutex_lock(tsdn, &arena->huge_mtx);
 	/* Update the size of the huge allocation. */
+	huge_node_unset(ptr, node);
 	assert(extent_node_size_get(node) != usize);
 	extent_node_size_set(node, usize);
+	huge_node_reset(tsdn, ptr, node);
 	/* Update zeroed. */
 	extent_node_zeroed_set(node, post_zeroed);
 	malloc_mutex_unlock(tsdn, &arena->huge_mtx);
@@ -224,7 +235,9 @@
 
 	malloc_mutex_lock(tsdn, &arena->huge_mtx);
 	/* Update the size of the huge allocation. */
+	huge_node_unset(ptr, node);
 	extent_node_size_set(node, usize);
+	huge_node_reset(tsdn, ptr, node);
 	/* Update zeroed. */
 	extent_node_zeroed_set(node, post_zeroed);
 	malloc_mutex_unlock(tsdn, &arena->huge_mtx);
@@ -260,7 +273,9 @@
 
 	malloc_mutex_lock(tsdn, &arena->huge_mtx);
 	/* Update the size of the huge allocation. */
+	huge_node_unset(ptr, node);
 	extent_node_size_set(node, usize);
+	huge_node_reset(tsdn, ptr, node);
 	malloc_mutex_unlock(tsdn, &arena->huge_mtx);
 
 	if (zero || (config_fill && unlikely(opt_zero))) {