From a89f3f29a0af37c7f3e78e38acb78f78e99dae78 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Fri, 24 Apr 2015 20:30:26 +0300 Subject: MAINT-4796 FIXED Crash in LLModelLoader::loadFromSLM --- indra/newview/llfloatermodelpreview.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'indra/newview/llfloatermodelpreview.cpp') diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 3f62d94dae..005c6999c3 100755 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -2232,10 +2232,15 @@ bool LLModelLoader::loadFromSLM(const std::string& filename) for (U32 lod = 0; lod < LLModel::NUM_LODS; ++lod) { - if (!model[lod].empty()) + if (model[lod].size() > idx) { instance_list[i].mLOD[lod] = model[lod][idx]; } + else if (!model[lod].empty()) + { + // slm load failed - indexes are corrupted + return false; + } } instance_list[i].mModel = model[LLModel::LOD_HIGH][idx]; -- cgit v1.2.3 From 1491c23d9b7850d91518b689572716026c0bacc8 Mon Sep 17 00:00:00 2001 From: vyacheslavsproductengine Date: Mon, 1 Jun 2015 21:02:35 +0400 Subject: MAINT-4761 FIXED viewer crash (Crash after selecting 'Skin weights' checkbox when uploading the second model.) --- indra/newview/llfloatermodelpreview.cpp | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) (limited to 'indra/newview/llfloatermodelpreview.cpp') diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 2cad67a47f..20760001fd 100755 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -3815,11 +3815,8 @@ void LLModelPreview::loadModelCallback(S32 lod) mFMP->getChild("confirm_checkbox")->set(FALSE); if (!mBaseModel.empty()) { - if (mFMP->getChild("description_form")->getValue().asString().empty()) - { - const std::string& model_name = mBaseModel[0]->getName(); - mFMP->getChild("description_form")->setValue(model_name); - } + const std::string& model_name = mBaseModel[0]->getName(); + mFMP->getChild("description_form")->setValue(model_name); } } refresh(); @@ -5143,8 +5140,11 @@ BOOL LLModelPreview::render() mViewOption["show_skin_weight"] = false; fmp->disableViewOption("show_skin_weight"); fmp->disableViewOption("show_joint_positions"); + + skin_weight = false; + mFMP->childSetValue("show_skin_weight", false); + fmp->setViewOptionEnabled("show_skin_weight", skin_weight); } - skin_weight = false; } if (upload_skin && !has_skin_weights) @@ -5248,6 +5248,16 @@ BOOL LLModelPreview::render() const LLVertexBuffer* buff = vb_vec[0]; regen = buff->hasDataType(LLVertexBuffer::TYPE_WEIGHT4) != skin_weight; } + else + { + LL_INFOS(" ") << "Vertex Buffer[" << mPreviewLOD << "]" << " is EMPTY!!!" << LL_ENDL; + regen = TRUE; + } + } + + if (regen) + { + genBuffers(mPreviewLOD, skin_weight); } //make sure material lists all match @@ -5268,11 +5278,6 @@ BOOL LLModelPreview::render() } } - if (regen) - { - genBuffers(mPreviewLOD, skin_weight); - } - if (!skin_weight) { for (LLMeshUploadThread::instance_list::iterator iter = mUploadData.begin(); iter != mUploadData.end(); ++iter) -- cgit v1.2.3