{
assert( max_per_leaf > 0 );
- if( item_count == 0 )
- {
- bh_tree *bh = vg_linear_alloc( lin_alloc, sizeof(bh_tree) );
- bh->node_count = 0;
- bh->system = system;
- bh->user = user;
- return bh;
- }
+ u32 alloc_count = VG_MAX( 1, item_count );
- u32 totsize = sizeof(bh_tree) + sizeof(bh_node)*(item_count*2-1);
+ u32 totsize = sizeof(bh_tree) + sizeof(bh_node)*(alloc_count*2-1);
bh_tree *bh = vg_linear_alloc( lin_alloc, vg_align8(totsize) );
bh->system = system;
bh->user = user;
root->start = 0;
bh_update_bounds( bh, 0 );
- bh_subdivide( bh, 0 );
+
+ if( item_count > 2 )
+ bh_subdivide( bh, 0 );
totsize = sizeof(bh_tree) + sizeof(bh_node) * bh->node_count;
bh = vg_linear_resize( lin_alloc, bh, totsize );