diff options
| author | RunitaiLinden <davep@lindenlab.com> | 2023-04-14 07:36:13 -0500 | 
|---|---|---|
| committer | RunitaiLinden <davep@lindenlab.com> | 2023-04-14 07:36:13 -0500 | 
| commit | d32bca67f17b978387ece4d9b220fc7b4d74a89b (patch) | |
| tree | 013d97354d4a4aac765b361a8bcb588f6cc68fc6 | |
| parent | 5f5bac8087973be7da1d9b78a080463b816a1efc (diff) | |
DRTVWR-559 Add paranoia checks around typecasts of LLGLTFMaterial to LLFetchedGLTFMaterial
| -rw-r--r-- | indra/newview/lllocalgltfmaterials.cpp | 1 | ||||
| -rw-r--r-- | indra/newview/lltexturectrl.cpp | 1 | ||||
| -rw-r--r-- | indra/newview/llviewerobject.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/llviewertexturelist.cpp | 1 | ||||
| -rw-r--r-- | indra/newview/llvovolume.cpp | 1 | 
5 files changed, 7 insertions, 1 deletions
| diff --git a/indra/newview/lllocalgltfmaterials.cpp b/indra/newview/lllocalgltfmaterials.cpp index d464ea0571..b7fdead3f9 100644 --- a/indra/newview/lllocalgltfmaterials.cpp +++ b/indra/newview/lllocalgltfmaterials.cpp @@ -179,6 +179,7 @@ bool LLLocalGLTFMaterial::updateSelf()                              LLFetchedGLTFMaterial* render_mat = (LLFetchedGLTFMaterial*)entry->getGLTFRenderMaterial();                              if (render_mat)                              { +                                llassert(dynamic_cast<LLFetchedGLTFMaterial*>(entry->getGLTFRenderMaterial()) != nullptr);                                  *render_mat = *this;                                  render_mat->applyOverride(*override_mat);                              } diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp index 6c38550049..0dd1ff5483 100644 --- a/indra/newview/lltexturectrl.cpp +++ b/indra/newview/lltexturectrl.cpp @@ -573,6 +573,7 @@ void LLFloaterTexturePicker::draw()              if (mInventoryPickType == LLTextureCtrl::PICK_MATERIAL)              {                  mGLTFMaterial = (LLFetchedGLTFMaterial*) gGLTFMaterialList.getMaterial(mImageAssetID); +                llassert(mGLTFMaterial == nullptr || dynamic_cast<LLFetchedGLTFMaterial*>(gGLTFMaterialList.getMaterial(mImageAssetID)) != nullptr);              }              else              { diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index e641ac4215..100c73377f 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -4957,10 +4957,12 @@ void LLViewerObject::updateTEMaterialTextures(U8 te)  	}      LLFetchedGLTFMaterial* mat = (LLFetchedGLTFMaterial*) getTE(te)->getGLTFRenderMaterial(); +    llassert(mat == nullptr || dynamic_cast<LLFetchedGLTFMaterial*>(getTE(te)->getGLTFRenderMaterial()) != nullptr);      LLUUID mat_id = getRenderMaterialID(te);      if (mat == nullptr && mat_id.notNull())      {          mat = (LLFetchedGLTFMaterial*) gGLTFMaterialList.getMaterial(mat_id); +        llassert(mat == nullptr || dynamic_cast<LLFetchedGLTFMaterial*>(gGLTFMaterialList.getMaterial(mat_id)) != nullptr);          if (mat->isFetching())          { // material is not loaded yet, rebuild draw info when the object finishes loading              mat->onMaterialComplete([id=getID()] @@ -5383,7 +5385,7 @@ S32 LLViewerObject::setTEGLTFMaterialOverride(U8 te, LLGLTFMaterial* override_ma      }      LLFetchedGLTFMaterial* src_mat = (LLFetchedGLTFMaterial*) tep->getGLTFMaterial(); - +    llassert(src_mat == nullptr || dynamic_cast<LLFetchedGLTFMaterial*>(tep->getGLTFMaterial()) != nullptr);      // if override mat exists, we must also have a source mat      if (!src_mat)      { diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp index 1449844588..d4c5e5535e 100644 --- a/indra/newview/llviewertexturelist.cpp +++ b/indra/newview/llviewertexturelist.cpp @@ -914,6 +914,7 @@ void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imag                      // stats                      const LLTextureEntry* te = face->getTextureEntry();                      LLFetchedGLTFMaterial* mat = te ? (LLFetchedGLTFMaterial*)te->getGLTFRenderMaterial() : nullptr; +                    llassert(mat == nullptr || dynamic_cast<LLFetchedGLTFMaterial*>(te->getGLTFRenderMaterial()) != nullptr);                      if (mat)                      {                          touch_texture(mat->mBaseColorTexture, vsize); diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 77849c668a..9a5719d8b6 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -5291,6 +5291,7 @@ void LLVolumeGeometryManager::registerFace(LLSpatialGroup* group, LLFace* facep,      LLUUID mat_id;      auto* gltf_mat = (LLFetchedGLTFMaterial*) facep->getTextureEntry()->getGLTFRenderMaterial(); +    llassert(gltf_mat == nullptr || dynamic_cast<LLFetchedGLTFMaterial*>(facep->getTextureEntry()->getGLTFRenderMaterial()) != nullptr);      if (gltf_mat != nullptr)      {          mat_id = gltf_mat->getHash(); // TODO: cache this hash | 
