diff --git a/src/cluster-table.c b/src/cluster-table.c index e317d69..1721559 100644 --- a/src/cluster-table.c +++ b/src/cluster-table.c @@ -17,11 +17,11 @@ static const size_t nr_cluster_sizes static int node_init(struct ec3_cluster_group *n) { - memset(n, 0x0, sizeof *n); - - for (int i = 0; i < EC3_CLUSTERS_PER_GROUP + 1; i++) { - n->g_child_offsets[i] = b_i32_htob(EC3_INVALID_OFFSET); - } + memset(&n->g_nr_clusters, 0x0, sizeof n->g_nr_clusters); + memset(n->g_reserved, 0x0, sizeof n->g_reserved); + memset(n->g_clusters, 0x0, sizeof n->g_clusters); + memset(n->g_child_offsets, 0xFF, sizeof n->g_child_offsets); + memset(n->g_padding, 0x0, sizeof n->g_padding); return 0; } @@ -97,6 +97,12 @@ static long tree_alloc_node(struct b_tree *p) return (long)len; } +static void __node_init(struct b_tree *tree, b_tree_node *n) +{ + struct ec3_cluster_group *node = (struct ec3_cluster_group *)n; + node_init(node); +} + static unsigned long node_get_nr_entries(struct b_tree *tree, b_tree_node *n) { struct ec3_cluster_group *node = (struct ec3_cluster_group *)n; @@ -190,6 +196,7 @@ static const struct b_tree_ops cluster_table_ops = { .tree_put_node = tree_put_node, .tree_alloc_node = tree_alloc_node, + .node_init = __node_init, .node_get_nr_entries = node_get_nr_entries, .node_set_nr_entries = node_set_nr_entries, .node_get_entry = node_get_entry,