From 4247faa97c4daad1ebef16bbb52bc49eb194b667 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 14 May 2024 15:06:06 -0500 Subject: [PATCH] fix possible crash when texture size is 0 --- src/gui/intro.cpp | 2 ++ src/gui/render/renderDX9.cpp | 4 ++++ src/gui/render/renderGL1.cpp | 2 ++ 3 files changed, 8 insertions(+) diff --git a/src/gui/intro.cpp b/src/gui/intro.cpp index cbb4ff042..f191d4b34 100644 --- a/src/gui/intro.cpp +++ b/src/gui/intro.cpp @@ -27,6 +27,8 @@ void FurnaceGUI::drawImage(ImDrawList* dl, FurnaceGUIImages image, const ImVec2& FurnaceGUIImage* imgI=getImage(image); FurnaceGUITexture* img=getTexture(image); + if (img==NULL) return; + float squareSize=MAX(introMax.x-introMin.x,introMax.y-introMin.y); float uDiff=uvMax.x-uvMin.x; float vDiff=uvMax.y-uvMin.y; diff --git a/src/gui/render/renderDX9.cpp b/src/gui/render/renderDX9.cpp index 66efdf0e6..a2bba061c 100644 --- a/src/gui/render/renderDX9.cpp +++ b/src/gui/render/renderDX9.cpp @@ -50,11 +50,15 @@ ImTextureID FurnaceGUIRenderDX9::getTextureID(FurnaceGUITexture* which) { float FurnaceGUIRenderDX9::getTextureU(FurnaceGUITexture* which) { FurnaceDX9Texture* t=(FurnaceDX9Texture*)which; + if (which==NULL) return 0.0; + if (t->widthReal<1) return 0.0f; return (float)t->width/(float)t->widthReal; } float FurnaceGUIRenderDX9::getTextureV(FurnaceGUITexture* which) { FurnaceDX9Texture* t=(FurnaceDX9Texture*)which; + if (which==NULL) return 0.0; + if (t->heightReal<1) return 0.0f; return (float)t->height/(float)t->heightReal; } diff --git a/src/gui/render/renderGL1.cpp b/src/gui/render/renderGL1.cpp index 9fb4485b5..66aa35cdc 100644 --- a/src/gui/render/renderGL1.cpp +++ b/src/gui/render/renderGL1.cpp @@ -46,11 +46,13 @@ ImTextureID FurnaceGUIRenderGL1::getTextureID(FurnaceGUITexture* which) { float FurnaceGUIRenderGL1::getTextureU(FurnaceGUITexture* which) { FurnaceGL1Texture* t=(FurnaceGL1Texture*)which; + if (t->widthReal<1) return 0.0f; return (float)t->width/(float)t->widthReal; } float FurnaceGUIRenderGL1::getTextureV(FurnaceGUITexture* which) { FurnaceGL1Texture* t=(FurnaceGL1Texture*)which; + if (t->heightReal<1) return 0.0f; return (float)t->height/(float)t->heightReal; }