Fix meta-ball bound-box calculation reading past buffer bounds
This broke "test_undo.view3d_multi_mode_select" test in "lib/tests/ui_simulate" and is likely exposed by recent changes to bounding box calculation. The missing check for DL_INDEX4 dates back to code from 2002 which intended to check this but was checking for DL_INDEX3 twice which got removed as part of a cleaned up. This could be hidden from memory checking tools as meta-balls over-allocate vertex arrays.
This commit is contained in:
parent
3a856f7967
commit
6a885e5d89
Notes:
blender-bot
2023-02-14 09:48:23 +01:00
Referenced by issue #94291, Metaball "Undo" crash Referenced by issue #93479, 3.0 Potential candidates for corrective releases
|
@ -1528,7 +1528,7 @@ void BKE_displist_minmax(const ListBase *dispbase, float min[3], float max[3])
|
|||
bool doit = false;
|
||||
|
||||
LISTBASE_FOREACH (const DispList *, dl, dispbase) {
|
||||
const int tot = (dl->type == DL_INDEX3) ? dl->nr : dl->nr * dl->parts;
|
||||
const int tot = (ELEM(dl->type, DL_INDEX3, DL_INDEX4)) ? dl->nr : dl->nr * dl->parts;
|
||||
for (const int i : IndexRange(tot)) {
|
||||
minmax_v3v3_v3(min, max, &dl->verts[i * 3]);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue