summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/libunix.cc
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source/libunix.cc')
-rw-r--r--crawl-ref/source/libunix.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/crawl-ref/source/libunix.cc b/crawl-ref/source/libunix.cc
index e1d3b71df4..c259c45146 100644
--- a/crawl-ref/source/libunix.cc
+++ b/crawl-ref/source/libunix.cc
@@ -335,6 +335,12 @@ static void handle_hangup(int)
crawl_state.saving_game = true;
if (crawl_state.need_save)
{
+ // Clean up all the hooks.
+ for (unsigned i = 0; i < crawl_state.exit_hooks.size(); ++i)
+ crawl_state.exit_hooks[i]->restore_state();
+
+ crawl_state.exit_hooks.clear();
+
// save_game(true) also exits, saving us the trouble of doing so.
save_game(true);
}