summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrey Kleshchev <andreykproductengine@lindenlab.com>2022-07-26 21:43:44 +0300
committerAndrey Kleshchev <andreykproductengine@lindenlab.com>2022-07-27 08:43:25 +0300
commit2a48c195301490e289ce7cf423b34e08028aae02 (patch)
tree6bf9efe9a1747fac2173d62e0e4fb7d3ba744275
parentfaeded36578612a9bea970fd5b2f02e5d73e0af1 (diff)
SL-17828 Crash at LLPolyMorphData::loadBinary
These files are usually prepackaged with viewer, either all issues should lead to an error or all issues should use warns. I don't think it is a critical issue, so instead of crashing, printing out filename.
-rw-r--r--indra/llappearance/llpolymesh.cpp8
-rw-r--r--indra/llappearance/llpolymorph.cpp4
2 files changed, 8 insertions, 4 deletions
diff --git a/indra/llappearance/llpolymesh.cpp b/indra/llappearance/llpolymesh.cpp
index 0a7a8d27bb..3892e4ce43 100644
--- a/indra/llappearance/llpolymesh.cpp
+++ b/indra/llappearance/llpolymesh.cpp
@@ -612,14 +612,16 @@ BOOL LLPolyMeshSharedData::loadMesh( const std::string& fileName )
// we reached the end of the morphs
break;
}
- LLPolyMorphData* morph_data = new LLPolyMorphData(std::string(morphName));
+ std::string morph_name(morphName);
+ LLPolyMorphData* morph_data = new LLPolyMorphData(morph_name);
BOOL result = morph_data->loadBinary(fp, this);
if (!result)
{
- delete morph_data;
- continue;
+ LL_WARNS() << "Failure loading " << morph_name << " from " << fileName << LL_ENDL;
+ delete morph_data;
+ continue;
}
mMorphData.insert(morph_data);
diff --git a/indra/llappearance/llpolymorph.cpp b/indra/llappearance/llpolymorph.cpp
index 16b5f1e204..84dd6156a9 100644
--- a/indra/llappearance/llpolymorph.cpp
+++ b/indra/llappearance/llpolymorph.cpp
@@ -156,7 +156,9 @@ BOOL LLPolyMorphData::loadBinary(LLFILE *fp, LLPolyMeshSharedData *mesh)
if (mVertexIndices[v] > 10000)
{
- LL_ERRS() << "Bad morph index: " << mVertexIndices[v] << LL_ENDL;
+ // Bad install? These are usually .llm files from 'character' fodler
+ LL_WARNS() << "Bad morph index " << v << ": " << mVertexIndices[v] << LL_ENDL;
+ return FALSE;
}