From 8dd186d3030d1308af1dd3e7859d3c945c346ebc Mon Sep 17 00:00:00 2001 From: Enno Rehling Date: Sun, 16 Dec 2007 23:18:22 +0000 Subject: [PATCH] illegal memory read, units must be freed very, very late. --- src/eressea/lua/gamecode.cpp | 6 +++--- src/eressea/server.cpp | 8 +++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/eressea/lua/gamecode.cpp b/src/eressea/lua/gamecode.cpp index 96b8dd3ff..484c58680 100644 --- a/src/eressea/lua/gamecode.cpp +++ b/src/eressea/lua/gamecode.cpp @@ -134,10 +134,10 @@ read_game(const char * filename) static int write_game(const char *filename) { - free_units(); + int result; remove_empty_factions(true); - - return writegame(filename, 0); + result = writegame(filename, 0); + return result; } static summary * sum_begin = 0; diff --git a/src/eressea/server.cpp b/src/eressea/server.cpp index afe1199b8..ff9bafc44 100644 --- a/src/eressea/server.cpp +++ b/src/eressea/server.cpp @@ -333,9 +333,11 @@ static void game_done(void) { /* Diese Routine enfernt allen allokierten Speicher wieder. Das ist nur - * zum Debugging interessant, wenn man Leak Detection hat, und nach - * nicht freigegebenem Speicher sucht, der nicht bis zum Ende benötigt - * wird (temporäre Hilsstrukturen) */ + * zum Debugging interessant, wenn man Leak Detection hat, und nach + * nicht freigegebenem Speicher sucht, der nicht bis zum Ende benötigt + * wird (temporäre Hilsstrukturen) */ + + free_units(); while (regions) { region *r = regions;