gdb: add target_ops::supports_displaced_step
[deliverable/binutils-gdb.git] / gdb / break-catch-throw.c
index 07dcc7dc0e7371a2df5255c575d83695287e495f..7f4a9f955dfc7edbb61ac5452a0245f1f9f7dab7 100644 (file)
@@ -156,26 +156,28 @@ check_status_exception_catchpoint (struct bpstats *bs)
   if (self->pattern == NULL)
     return;
 
+  const char *name = nullptr;
+  gdb::unique_xmalloc_ptr<char> canon;
   try
     {
       struct value *typeinfo_arg;
-      std::string canon;
 
       fetch_probe_arguments (NULL, &typeinfo_arg);
       type_name = cplus_typename_from_type_info (typeinfo_arg);
 
       canon = cp_canonicalize_string (type_name.c_str ());
-      if (!canon.empty ())
-       std::swap (type_name, canon);
+      name = (canon != nullptr
+             ? canon.get ()
+             : type_name.c_str ());
     }
   catch (const gdb_exception_error &e)
     {
       exception_print (gdb_stderr, e);
     }
 
-  if (!type_name.empty ())
+  if (name != nullptr)
     {
-      if (self->pattern->exec (type_name.c_str (), 0, NULL, 0) != 0)
+      if (self->pattern->exec (name, 0, NULL, 0) != 0)
        bs->stop = 0;
     }
 }
This page took 0.024774 seconds and 4 git commands to generate.