forked from bartvdbraak/blender
Fixing up some buggy cleanup code in BL_ShapeDeformer. This code was causing crashes and corrupting shape keys. This commit fixes the following bugs:
[#30059] Shape Keys is gone in Blender if you use Add Object Actuator in BGE [#30024] Segmentation fault after addObject when using shape keys [#28683] segfault in shapekey conversion code when running a game (YF, level home) twice
This commit is contained in:
parent
441dc0fc7e
commit
6905d0d92b
@ -50,6 +50,8 @@
|
|||||||
#include "DNA_meshdata_types.h"
|
#include "DNA_meshdata_types.h"
|
||||||
#include "BKE_armature.h"
|
#include "BKE_armature.h"
|
||||||
#include "BKE_action.h"
|
#include "BKE_action.h"
|
||||||
|
#include "BKE_global.h"
|
||||||
|
#include "BKE_main.h"
|
||||||
#include "BKE_key.h"
|
#include "BKE_key.h"
|
||||||
#include "BKE_ipo.h"
|
#include "BKE_ipo.h"
|
||||||
#include "MT_Point3.h"
|
#include "MT_Point3.h"
|
||||||
@ -97,10 +99,13 @@ BL_ShapeDeformer::BL_ShapeDeformer(BL_DeformableGameObject *gameobj,
|
|||||||
|
|
||||||
BL_ShapeDeformer::~BL_ShapeDeformer()
|
BL_ShapeDeformer::~BL_ShapeDeformer()
|
||||||
{
|
{
|
||||||
if (m_key && m_bmesh->key)
|
if (m_key && m_bmesh->key && m_key != m_bmesh->key)
|
||||||
{
|
{
|
||||||
free_key(m_bmesh->key);
|
free_key(m_bmesh->key);
|
||||||
|
BLI_remlink_safe(&G.main->key, m_bmesh->key);
|
||||||
|
MEM_freeN(m_bmesh->key);
|
||||||
m_bmesh->key = m_key;
|
m_bmesh->key = m_key;
|
||||||
|
m_key = NULL;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user