From 57766ba649645fdd9118ff1b35aeb691869895b4 Mon Sep 17 00:00:00 2001 From: marauder2k7 Date: Sat, 7 Mar 2026 10:19:58 +0000 Subject: [PATCH 1/2] Update ImageAsset.cpp the opened ddsfs file for pulling metadata was leaking. The FileStream function close does not delete the pointer to the original file only FileObject does this. It might be worthwhile instead to switch to using fileObject anywhere we use a filestream that way we can be at least somewhat safe in using the object and once it goes out of scope the raw pointer will be freed --- Engine/source/T3D/assets/ImageAsset.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Engine/source/T3D/assets/ImageAsset.cpp b/Engine/source/T3D/assets/ImageAsset.cpp index 34fddd94c..99168a9b0 100644 --- a/Engine/source/T3D/assets/ImageAsset.cpp +++ b/Engine/source/T3D/assets/ImageAsset.cpp @@ -669,8 +669,8 @@ void ImageAsset::populateImage(void) mImageHeight = tempFile->mHeight; } - ddsFs->close(); delete tempFile; + delete ddsFs; } else { From 40f697cea64ee596f93e404a8cb08a1a14872837 Mon Sep 17 00:00:00 2001 From: JeffR Date: Wed, 11 Mar 2026 02:22:17 -0500 Subject: [PATCH 2/2] Adds sanity checks when removing children to GuiPopUpMenuCtrlEx to prevent crashing on exit --- Engine/source/gui/controls/guiPopUpCtrlEx.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/Engine/source/gui/controls/guiPopUpCtrlEx.cpp b/Engine/source/gui/controls/guiPopUpCtrlEx.cpp index e7bacb4f3..f064a7f09 100644 --- a/Engine/source/gui/controls/guiPopUpCtrlEx.cpp +++ b/Engine/source/gui/controls/guiPopUpCtrlEx.cpp @@ -1651,10 +1651,17 @@ void GuiPopUpMenuCtrlEx::addChildren() void GuiPopUpMenuCtrlEx::removeChildren() { - mTl->deleteObject(); - mSc->deleteObject(); - mSearchEdit->deleteObject(); - mBackground->deleteObject(); + if (mTl && !mTl->isDeleted()) + mTl->deleteObject(); + + if (mSc && !mSc->isDeleted()) + mSc->deleteObject(); + + if (mSearchEdit && !mSearchEdit->isDeleted()) + mSearchEdit->deleteObject(); + + if (mBackground && !mBackground->isDeleted()) + mBackground->deleteObject(); } //------------------------------------------------------------------------------