From 48254ea5a51b602e714bf5b63c1d53fb721add6f Mon Sep 17 00:00:00 2001 From: Flugente Date: Tue, 31 Jan 2017 21:05:01 +0000 Subject: [PATCH] Fix: deadlock on ammo creation popup git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8385 3b4a5df2-a311-0410-b5c6-a8a6f20db521 --- Tactical/Interface Items.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Tactical/Interface Items.cpp b/Tactical/Interface Items.cpp index 9c543c74..5c6330ed 100644 --- a/Tactical/Interface Items.cpp +++ b/Tactical/Interface Items.cpp @@ -1886,7 +1886,10 @@ void popupCallbackAmmo(UINT16 item, UINT16 pocket, SOLDIERTYPE* pSoldier ){ { clipCreated = false; bLoop = tempStack.ubNumberOfObjects; - while(tempStack.ubNumberOfObjects > 0) + + // Flugente: This is just asking for trouble if AddObjectsToStack(...) fails. As we don't know from its return value whether it worked (wtf?), we exit in a different way + int loopcnt = bLoop; + while ( tempStack.ubNumberOfObjects > 0 && loopcnt > 0 ) { if(pocket != -1) { @@ -1898,7 +1901,10 @@ void popupCallbackAmmo(UINT16 item, UINT16 pocket, SOLDIERTYPE* pSoldier ){ } if(bLoop < 1) break; + + --loopcnt; } + if(tempStack.ubNumberOfObjects < 1) clipCreated = true; else