Okay I found a potential cause of corruption.

For some reason, when I wanted to check if a file existed, I was using

if(file_open_read(filename))

instead of

if(file_exists(filename))

In most cases this actually worked okay, since the function was looking for an existing file. However, in one case, it would only work when the file did not exist.

In this case, if the file did exist, I guess that file would actually remain open for reading, and it never got closed. I am about to test the game with this corrected ... wish me luck!