aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/libstdc++-v3/libsupc++/eh_personality.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.9/libstdc++-v3/libsupc++/eh_personality.cc')
-rw-r--r--gcc-4.9/libstdc++-v3/libsupc++/eh_personality.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc-4.9/libstdc++-v3/libsupc++/eh_personality.cc b/gcc-4.9/libstdc++-v3/libsupc++/eh_personality.cc
index f315a8341..cb4467aa0 100644
--- a/gcc-4.9/libstdc++-v3/libsupc++/eh_personality.cc
+++ b/gcc-4.9/libstdc++-v3/libsupc++/eh_personality.cc
@@ -378,6 +378,12 @@ PERSONALITY_FUNCTION (int version,
switch (state & _US_ACTION_MASK)
{
case _US_VIRTUAL_UNWIND_FRAME:
+ // If the unwind state pattern is
+ // _US_VIRTUAL_UNWIND_FRAME | _US_FORCE_UNWIND
+ // then we don't need to search for any handler as it is not a real
+ // exception. Just unwind the stack.
+ if (state & _US_FORCE_UNWIND)
+ CONTINUE_UNWINDING;
actions = _UA_SEARCH_PHASE;
break;