- removed all asserts from the interpolation objects' Destroy methods. The condition will not be true after a failed savegame write occured.

- fixed: D_ErrorCleanup must clear 'savegamerestore'.
- fixed: Cleaning up when loading a savegame failed while restoring the thinker list did not work. There were two issues:
  * removed the asserts in GC::SweepList because they get triggered by thinkers that were not fully initialized during loading.
  * AActor::UnlinkFromWorld may not assume that the sector list has been initialized when this function is called. 

SVN r3274 (trunk)
This commit is contained in:
Christoph Oelckers 2011-07-15 13:26:36 +00:00
commit 080e769c76
5 changed files with 30 additions and 38 deletions

View file

@ -192,19 +192,10 @@ void DThinker::SerializeAll(FArchive &arc, bool hubLoad)
statcount--;
}
}
catch (class CDoomError &err)
catch (class CDoomError &)
{
bSerialOverride = false;
// DestroyAllThinkers cannot be called here. It will try to delete the corrupted
// object table left behind by the serializer and crash.
// Trying to continue is not an option here because the garbage collector will
// crash the next time it runs.
// Even making this a fatal error will crash but at least the message can be seen
// before the crash - which is not the case with all other options.
//DestroyAllThinkers();
I_FatalError("%s", err.GetMessage());
DestroyAllThinkers();
throw;
}
bSerialOverride = false;