From 08f52cfa16c2a6e87d68614035dd37faca69dfc8 Mon Sep 17 00:00:00 2001 From: marauder2k7 Date: Thu, 19 Jun 2025 16:58:44 +0100 Subject: [PATCH] add extra checks add extra checks around an empty stringtableentry for assets and bitmap controls --- Engine/source/T3D/assets/ImageAsset.h | 8 ++++---- Engine/source/T3D/assets/ShapeAsset.h | 6 +++--- Engine/source/gui/buttons/guiBitmapButtonCtrl.h | 6 ++++++ Engine/source/gui/controls/guiBitmapCtrl.cpp | 17 ++++++++++------- 4 files changed, 23 insertions(+), 14 deletions(-) diff --git a/Engine/source/T3D/assets/ImageAsset.h b/Engine/source/T3D/assets/ImageAsset.h index 102f59052..97623f5a4 100644 --- a/Engine/source/T3D/assets/ImageAsset.h +++ b/Engine/source/T3D/assets/ImageAsset.h @@ -243,7 +243,7 @@ public: return; \ if(get##name##File() == _in) \ return; \ - if(_in == NULL || _in == StringTable->EmptyString()) \ + if(_in == NULL || _in == StringTable->EmptyString() || _in == "") \ { \ m##name##Asset = NULL; \ m##name##File = ""; \ @@ -300,7 +300,7 @@ public: return; \ if(get##name##File() == _in) \ return; \ - if(_in == NULL || _in == StringTable->EmptyString()) \ + if(_in == NULL || _in == StringTable->EmptyString() || _in == "") \ { \ m##name##Asset = NULL; \ m##name##File = ""; \ @@ -364,7 +364,7 @@ public: return; \ if(get##name##File(index) == _in) \ return; \ - if(_in == NULL || _in == StringTable->EmptyString()) \ + if(_in == NULL || _in == StringTable->EmptyString() || _in == "") \ { \ m##name##Asset[index] = NULL; \ m##name##File[index] = ""; \ @@ -422,7 +422,7 @@ public: return; \ if(get##name##File(index) == _in) \ return; \ - if(_in == NULL || _in == StringTable->EmptyString()) \ + if(_in == NULL || _in == StringTable->EmptyString() || _in == "") \ { \ m##name##Asset[index] = NULL; \ m##name##File[index] = ""; \ diff --git a/Engine/source/T3D/assets/ShapeAsset.h b/Engine/source/T3D/assets/ShapeAsset.h index 722f5b4ad..2086c0395 100644 --- a/Engine/source/T3D/assets/ShapeAsset.h +++ b/Engine/source/T3D/assets/ShapeAsset.h @@ -513,7 +513,7 @@ public: return; \ if(get##name##File() == _in) \ return; \ - if (_in == NULL || _in == StringTable->EmptyString()) \ + if(_in == NULL || _in == StringTable->EmptyString() || _in == "") \ { \ m##name##Asset = NULL; \ m##name##File = ""; \ @@ -569,7 +569,7 @@ public: return; \ if(get##name##File() == _in) \ return; \ - if (_in == NULL || _in == StringTable->EmptyString()) \ + if(_in == NULL || _in == StringTable->EmptyString() || _in == "") \ { \ m##name##Asset = NULL; \ m##name##File = ""; \ @@ -632,7 +632,7 @@ public: return; \ if(get##name##File(index) == _in) \ return; \ - if (_in == NULL || _in == StringTable->EmptyString()) \ + if(_in == NULL || _in == StringTable->EmptyString() || _in == "") \ { \ m##name##Asset[index] = NULL; \ m##name##File[index] = ""; \ diff --git a/Engine/source/gui/buttons/guiBitmapButtonCtrl.h b/Engine/source/gui/buttons/guiBitmapButtonCtrl.h index 773f7eb2c..ec96e9344 100644 --- a/Engine/source/gui/buttons/guiBitmapButtonCtrl.h +++ b/Engine/source/gui/buttons/guiBitmapButtonCtrl.h @@ -123,6 +123,12 @@ private: String mBitmapFile; public: void _setBitmap(StringTableEntry _in) { + if (_in == NULL || _in == StringTable->EmptyString() || _in == "") + { + mBitmapAsset = NULL; + mBitmapFile = ""; + return; + } if (mBitmapAsset.getAssetId() == _in) return; if (!AssetDatabase.isDeclaredAsset(_in)) { StringTableEntry imageAssetId = ImageAsset::smNoImageAssetFallback; AssetQuery query; S32 foundAssetcount = AssetDatabase.findAssetLooseFile(&query, _in); if (foundAssetcount != 0) { imageAssetId = query.mAssetList[0]; diff --git a/Engine/source/gui/controls/guiBitmapCtrl.cpp b/Engine/source/gui/controls/guiBitmapCtrl.cpp index 52955f90d..fe7aa7862 100644 --- a/Engine/source/gui/controls/guiBitmapCtrl.cpp +++ b/Engine/source/gui/controls/guiBitmapCtrl.cpp @@ -121,16 +121,19 @@ void GuiBitmapCtrl::setBitmap(const char* name, bool resize) if (assetId != StringTable->EmptyString()) _setBitmap(assetId); else - _setBitmap(name); + _setBitmap(StringTable->EmptyString()); } - mBitmap = mBitmapAsset->getTexture(&GFXDefaultGUIProfile); - - if (getBitmap() && resize) + if (mBitmapAsset.notNull()) { - - setExtent(mBitmap->getWidth(), mBitmap->getHeight()); - updateSizing(); + mBitmap = mBitmapAsset->getTexture(&GFXDefaultGUIProfile); + + if (getBitmap() && resize) + { + + setExtent(mBitmap->getWidth(), mBitmap->getHeight()); + updateSizing(); + } } setUpdate();