Skip to content

Commit 84de3f9

Browse files
committed
memory usage
1 parent 980d0cb commit 84de3f9

File tree

2 files changed

+18
-8
lines changed

2 files changed

+18
-8
lines changed

storage.h

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1011,20 +1011,26 @@ class abstract_chunked_voxel_storage : public regular_voxel_storage {
10111011
release(get_chunk(this, ijk));
10121012
}
10131013

1014-
abstract_voxel_storage* a2 = a->is_explicit() ? a->copy(n->next_slot()) : a->make_explicit(n->next_slot());
1014+
abstract_voxel_storage* a_explicit = a->is_explicit() ? (inplace ? a : a->copy(n->next_slot())) : a->make_explicit(n->next_slot());
10151015
// b is temporary, so not assigned next_slot
1016-
abstract_voxel_storage* b2 = b->is_explicit() ? nullptr : b->make_explicit();
1017-
abstract_voxel_storage* b3 = b2 ? b2 : b;
1016+
abstract_voxel_storage* b_temp = b->is_explicit() ? nullptr : b->make_explicit();
1017+
abstract_voxel_storage* b_forced_explicit = b_temp ? b_temp : b;
10181018
if (mode == OP_UNION) {
1019-
a2->boolean_union(b3);
1019+
a_explicit->boolean_union(b_forced_explicit);
10201020
} else if (mode == OP_SUBTRACTION) {
1021-
a2->boolean_subtraction(b3);
1021+
a_explicit->boolean_subtraction(b_forced_explicit);
10221022
} else if (mode == OP_INTERSECTION) {
1023-
a2->boolean_intersection(b3);
1023+
a_explicit->boolean_intersection(b_forced_explicit);
10241024
}
1025-
delete b2;
1026-
set_chunk(n, ijk, a2);
1025+
delete b_temp;
10271026

1027+
if (inplace && a_explicit != a) {
1028+
delete a;
1029+
}
1030+
if (!inplace || a_explicit != a) {
1031+
set_chunk(n, ijk, a_explicit);
1032+
}
1033+
10281034
END_LOOP;
10291035

10301036
return n;

traversal.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -421,6 +421,10 @@ class visitor {
421421
queue.pop_front();
422422
}
423423
}
424+
425+
~visitor() {
426+
delete visited_;
427+
}
424428
};
425429

426430
class query_leftmost {

0 commit comments

Comments
 (0)