diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp
index f0ebecfb13..8536203742 100644
--- a/indra/newview/llfloatermodelpreview.cpp
+++ b/indra/newview/llfloatermodelpreview.cpp
@@ -5662,6 +5662,12 @@ BOOL LLModelPreview::render()
position[j] = v;
}
+
+ // FIRE-13465 Make sure there's a material set before dereferencing it
+ if( instance.mModel->mMaterialList.size() > i &&
+ instance.mMaterial.end() != instance.mMaterial.find( instance.mModel->mMaterialList[ i ] ) )
+ {
+ //
const std::string& binding = instance.mModel->mMaterialList[i];
const LLImportMaterial& material = instance.mMaterial[binding];
@@ -5676,7 +5682,14 @@ BOOL LLModelPreview::render()
gGL.getTexUnit(0)->bind(material.mDiffuseMap, true);
mTextureSet.insert(material.mDiffuseMap.get());
}
+
}
+
+ } else // FIRE-13465 Make sure there's a material set before dereferencing it, if none, set buffer type and unbind texture.
+ {
+ buffer->setBuffer(type_mask & buffer->getTypeMask());
+ gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+ } //
buffer->draw(LLRender::TRIANGLES, buffer->getNumIndices(), 0);
gGL.diffuseColor3f(0.4f, 0.4f, 0.4f);