Hello,

I have found a fix for the crashes (Most of them happen on complex laser
levels).
By adding traces, I've seen that Wipe() is called with currentStage >=
numStages, which should have been impossible (UpdateCurrent will bring
currentStage back into range).

This fix will bring currentStage back into range after a call to
Reset(double t)

The attached patch is written on the fully patched source code.

Regards,
Roland Clobus

--- hex_puzzzle.cpp	2007-12-16 13:19:47.000000000 +0100
+++ hex_puzzle.fixed.cpp	2007-12-16 13:19:05.000000000 +0100
@@ -602,6 +602,9 @@
 		{
 			while (numStages > 0 && time[numStages-1] >= t)
 				numStages--;
+			if (currentStage > 0 && currentStage >= numStages) {
+				currentStage = numStages - 1;
+			}
 		}
 	}
 	void Wipe()

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to