Fix: leak in edit mesh snap cache when changing shapekeys
Do not use `BMEditMesh` as key as it is freed when changing shape-keys.
This commit is contained in:
parent
24964575e7
commit
3dbbe7246a
@ -23,7 +23,7 @@ struct SnapObjectContext {
|
||||
struct SnapCache {
|
||||
virtual ~SnapCache(){};
|
||||
};
|
||||
blender::Map<const BMEditMesh *, std::unique_ptr<SnapCache>> editmesh_caches;
|
||||
blender::Map<const ID *, std::unique_ptr<SnapCache>> editmesh_caches;
|
||||
|
||||
/* Filter data, returns true to check this value */
|
||||
struct {
|
||||
|
@ -110,7 +110,7 @@ static SnapCache_EditMesh *snap_object_data_editmesh_get(SnapObjectContext *sctx
|
||||
bool init = false;
|
||||
|
||||
if (std::unique_ptr<SnapObjectContext::SnapCache> *em_cache_p = sctx->editmesh_caches.lookup_ptr(
|
||||
em))
|
||||
ob_eval->runtime->data_orig))
|
||||
{
|
||||
em_cache = static_cast<SnapCache_EditMesh *>(em_cache_p->get());
|
||||
bool is_dirty = false;
|
||||
@ -157,7 +157,7 @@ static SnapCache_EditMesh *snap_object_data_editmesh_get(SnapObjectContext *sctx
|
||||
else if (create) {
|
||||
std::unique_ptr<SnapCache_EditMesh> em_cache_ptr = std::make_unique<SnapCache_EditMesh>();
|
||||
em_cache = em_cache_ptr.get();
|
||||
sctx->editmesh_caches.add_new(em, std::move(em_cache_ptr));
|
||||
sctx->editmesh_caches.add_new(ob_eval->runtime->data_orig, std::move(em_cache_ptr));
|
||||
init = true;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user