Fix unreported bug: Ensure you have the correct array directory even after the `dm->release(dm)`

This commit is contained in:
Germano Cavalcante 2017-02-26 14:16:54 -03:00
parent 112e4de885
commit 631ecbc4ca
Notes: blender-bot 2023-02-14 07:11:50 +01:00
Referenced by issue #50800, toggling selection doesn't work when enumeration is used
1 changed files with 28 additions and 0 deletions

View File

@ -87,6 +87,8 @@ typedef struct SnapObjectData {
typedef struct SnapObjectData_Mesh {
SnapObjectData sd;
BVHTreeFromMesh *bvh_trees[3];
MPoly *mpoly;
bool poly_allocated;
} SnapObjectData_Mesh;
@ -1173,6 +1175,29 @@ static bool snapDerivedMesh(
if (treedata->cached && !bvhcache_has_tree(dm->bvhCache, treedata->tree)) {
free_bvhtree_from_mesh(treedata);
}
else {
if (!treedata->vert_allocated) {
treedata->vert = DM_get_vert_array(dm, &treedata->vert_allocated);
}
if ((tree_index == 1) && !treedata->edge_allocated) {
treedata->edge = DM_get_edge_array(dm, &treedata->vert_allocated);
}
if (tree_index == 2) {
if (!treedata->loop_allocated) {
treedata->loop = DM_get_loop_array(dm, &treedata->loop_allocated);
}
if (!treedata->looptri_allocated) {
if (!sod->poly_allocated) {
sod->mpoly = DM_get_poly_array(dm, &sod->poly_allocated);
}
treedata->looptri = DM_get_looptri_array(
dm, treedata->vert,
sod->mpoly, dm->getNumPolys(dm),
treedata->loop, dm->getNumLoops(dm),
&treedata->looptri_allocated);
}
}
}
}
}
@ -1855,6 +1880,9 @@ static void snap_object_data_free(void *sod_v)
free_bvhtree_from_mesh(sod->bvh_trees[i]);
}
}
if (sod->poly_allocated) {
MEM_freeN(sod->mpoly);
}
break;
}
case SNAP_EDIT_MESH: