From 6a31f840a62aa5a50c76b33bf8f8328d595a7d01 Mon Sep 17 00:00:00 2001 From: Thomas Goyne Date: Thu, 3 Nov 2011 00:29:13 +0000 Subject: [PATCH] Fix crash when slots disconnect from a signal in response to that signal Originally committed to SVN as r5806. --- aegisub/libaegisub/include/libaegisub/signal.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/aegisub/libaegisub/include/libaegisub/signal.h b/aegisub/libaegisub/include/libaegisub/signal.h index 9da6e5c20..813bd7ec3 100644 --- a/aegisub/libaegisub/include/libaegisub/signal.h +++ b/aegisub/libaegisub/include/libaegisub/signal.h @@ -183,8 +183,11 @@ namespace detail { } #define SIGNALS_H_FOR_EACH_SIGNAL(...) \ - for (typename super::SlotMap::iterator cur = slots.begin(); cur != slots.end(); ++cur) { \ - if (!Blocked(cur->first)) cur->second(__VA_ARGS__); \ + for (typename super::SlotMap::iterator cur = slots.begin(); cur != slots.end();) { \ + if (Blocked(cur->first)) \ + ++cur; \ + else \ + (cur++)->second(__VA_ARGS__); \ } /// @class Signal