[Fixed] Fix wrong logic of snapshot inconsistent with movie
Posted: Tue Jan 04, 2011 2:38 pm
One of fatal glitches since 1.51.
Code: Select all
diff --git a/movie.cpp b/movie.cpp
index de5dc48..9286b8f 100644
--- a/movie.cpp
+++ b/movie.cpp
@@ -745,7 +745,8 @@ int S9xMovieUnfreeze (uint8 *buf, uint32 size)
}
else
{
- if (current_frame > Movie.MaxFrame || current_sample > Movie.MaxSample || memcmp(Movie.InputBuffer, ptr, space_needed))
+ uint32 space_processed = (Movie.BytesPerSample * (current_sample + 1));
+ if (current_frame > Movie.MaxFrame || current_sample > Movie.MaxSample || memcmp(Movie.InputBuffer, ptr, space_processed))
return (SNAPSHOT_INCONSISTENT);
change_state(MOVIE_STATE_PLAY);