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()
signature.asc
Description: This is a digitally signed message part

