summaryrefslogtreecommitdiff
path: root/indra/llprimitive/llmodel.h
diff options
context:
space:
mode:
authorAndrey Kleshchev <andreykproductengine@lindenlab.com>2023-12-14 22:51:18 +0200
committerakleshchev <117672381+akleshchev@users.noreply.github.com>2023-12-15 03:51:36 +0200
commit8ea1f4a3fc77145cb60a7b8182e0da9c0e43ed69 (patch)
tree3a2640d7532d80c9118ecab86a0cb5c7396c7418 /indra/llprimitive/llmodel.h
parent009cd9adccd117357fa4054c523218a0e990bb80 (diff)
SL-15628 Crash inside ~LLModelInstanceBase
More explicit cleanup in hopes of narrowing down which of the models failed
Diffstat (limited to 'indra/llprimitive/llmodel.h')
-rw-r--r--indra/llprimitive/llmodel.h16
1 files changed, 15 insertions, 1 deletions
diff --git a/indra/llprimitive/llmodel.h b/indra/llprimitive/llmodel.h
index 4505d6b3b9..040257e00e 100644
--- a/indra/llprimitive/llmodel.h
+++ b/indra/llprimitive/llmodel.h
@@ -106,6 +106,8 @@ public:
std::vector<LLVector3> mPositions;
std::vector<LLVector3> mNormals;
+ ~PhysicsMesh() {}
+
void clear()
{
mPositions.clear();
@@ -131,6 +133,7 @@ public:
public:
Decomposition() { }
Decomposition(LLSD& data);
+ ~Decomposition() { }
void fromLLSD(LLSD& data);
LLSD asLLSD() const;
bool hasHullList() const;
@@ -365,7 +368,7 @@ class LLModelInstanceBase
{
public:
LLPointer<LLModel> mModel;
- LLPointer<LLModel> mLOD[5];
+ LLPointer<LLModel> mLOD[LLModel::NUM_LODS];
LLUUID mMeshID;
LLMatrix4 mTransform;
@@ -380,6 +383,15 @@ public:
: mModel(NULL)
{
}
+
+ virtual ~LLModelInstanceBase()
+ {
+ mModel = NULL;
+ for (int j = 0; j < LLModel::NUM_LODS; ++j)
+ {
+ mLOD[j] = NULL;
+ }
+ };
};
typedef std::vector<LLModelInstanceBase> model_instance_list;
@@ -399,6 +411,8 @@ public:
LLModelInstance(LLSD& data);
+ ~LLModelInstance() {}
+
LLSD asLLSD();
};