Handle "p S::method()::static_var" in the C++ parser
[deliverable/binutils-gdb.git] / gdb / frame-unwind.c
index 4d21349fe6c4833742a4ec3cf3bcede9e8c900f1..3a750130594b1c6de2a68ca7085a2d560fa3cd06 100644 (file)
@@ -106,8 +106,11 @@ frame_unwind_try_unwinder (struct frame_info *this_frame, void **this_cache,
     {
       res = unwinder->sniffer (unwinder, this_frame, this_cache);
     }
-  CATCH (ex, RETURN_MASK_ERROR)
+  CATCH (ex, RETURN_MASK_ALL)
     {
+      /* Catch all exceptions, caused by either interrupt or error.
+        Reset *THIS_CACHE.  */
+      *this_cache = NULL;
       if (ex.error == NOT_AVAILABLE_ERROR)
        {
          /* This usually means that not even the PC is available,
@@ -128,6 +131,8 @@ frame_unwind_try_unwinder (struct frame_info *this_frame, void **this_cache,
     }
   else
     {
+      /* Don't set *THIS_CACHE to NULL here, because sniffer has to do
+        so.  */
       do_cleanups (old_cleanup);
       return 0;
     }
This page took 0.023878 seconds and 4 git commands to generate.