diff --git a/src/fractal.cpp b/src/fractal.cpp index 1742f84..6626bec 100644 --- a/src/fractal.cpp +++ b/src/fractal.cpp @@ -251,9 +251,15 @@ bool generator_t::generate_axiom(etl::ivector& out_markers) { bool generator_t::generate_group(group_id_t gid, vec2 pos, mat<2, 2> orient, etl::ivector& out_markers) { const group_output_t& group_output = m_group_outputs[gid]; - if (m_leafs_cur->capacity() < group_output.m_child_leafs.size() || - m_wleafs_cur->capacity() < group_output.m_child_wleafs.size() || - out_markers.capacity() < group_output.m_child_markers.size()) { + size_t new_leafs_size = m_leafs_cur->size() + group_output.m_child_leafs.size(); + size_t new_wleafs_size = m_wleafs_cur->size() + group_output.m_child_wleafs.size(); + size_t new_marker_size = out_markers.size() + group_output.m_child_markers.size(); + + bool reached_max_leafs = m_leafs_cur->capacity() < new_leafs_size; + bool reached_max_wleafs = m_wleafs_cur->capacity() < new_wleafs_size; + bool reached_max_markers = out_markers.capacity() < new_marker_size; + + if (reached_max_leafs || reached_max_wleafs || reached_max_markers) { mlog::debug << "Reached limit" << endl; return false; }