Download v. 0.0.0.4: http://depositfiles.com/files/wk71bm2ie
The bug itself seems to be very old.
Basically replay action processing looks like:
1) read the actions for next tick and copy actions data to the buffer
2) wait until that tick comes, read actions from the buffer and execute
When game is paused the tick remains unchanged, so every chat message written while game paused has been recorded with that tick when game was paused.
The problem is in that the buffer in which actions are copied for execution is too small. I believe about 12 messages are enough to make it overflow. And when overflow happens the data overrides neighbor memory areas in which are other variables located.The consequences can be very different and depend on amount of messages has been recorded during pause.
What I did is a replacement of static buffer with dynamic one.
1) when copying actions to the buffer:
1.1) when overwrite - allocate new buffer, write data to the new buffer
1.2) when append (multiple actions for a single tick) - append to the previously allocated buffer increasing its size if needed
2) when reading from a static buffer - return a pointer to the dynamic buffer instead of static
Plugin patches StarCraft's code, so use it on your own risk!
I will be very appreciated for any testing/bugreports.
Later I will merge this fix into ICCup Launcher.
EDIT: It has nothing to do with saving a replay, it just fixes a playback
You need this only when watching a replay not playing a game.
PS: I believe the main mistake of BW developers was to count chat text as game action. I would rather record/read it in a different way. But I'm not the one who decide ^^
EDIT2: the bug is old, but it was impossible to produce so many actions for a single tick... before RWT was implemented! Because player was unable to make game actions while game paused. Thats why I believe that text messages should not count as game actions.
UPDATE: v. 0.0.0.2 should work online now.
UPDATE: v. 0.0.0.3 fixed action loss in bnet-mode.
UPDATE: v. 0.0.0.4 fixed activation behavior (when replay starts)