Fix incorrect check for maximum marker/leaf capacity reached
Caused overflow and invalid read/writes
This commit is contained in:
parent
79fc7f5be7
commit
eb1fefbf5c
@ -251,9 +251,15 @@ bool generator_t::generate_axiom(etl::ivector<marker_t>& out_markers) {
|
|||||||
bool generator_t::generate_group(group_id_t gid, vec2 pos, mat<2, 2> orient, etl::ivector<marker_t>& out_markers) {
|
bool generator_t::generate_group(group_id_t gid, vec2 pos, mat<2, 2> orient, etl::ivector<marker_t>& out_markers) {
|
||||||
const group_output_t& group_output = m_group_outputs[gid];
|
const group_output_t& group_output = m_group_outputs[gid];
|
||||||
|
|
||||||
if (m_leafs_cur->capacity() < group_output.m_child_leafs.size() ||
|
size_t new_leafs_size = m_leafs_cur->size() + group_output.m_child_leafs.size();
|
||||||
m_wleafs_cur->capacity() < group_output.m_child_wleafs.size() ||
|
size_t new_wleafs_size = m_wleafs_cur->size() + group_output.m_child_wleafs.size();
|
||||||
out_markers.capacity() < group_output.m_child_markers.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;
|
mlog::debug << "Reached limit" << endl;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user