Simplify XML parsing a bit.
[deliverable/binutils-gdb.git] / gdb / memory-map.c
index d10419c8e59333dd1a9a57cc6468046847d5f34f..77389eb9938b7deddf5e7220f8a429171f3b958e 100644 (file)
@@ -178,25 +178,22 @@ const struct gdb_xml_element memory_map_elements[] = {
 VEC(mem_region_s) *
 parse_memory_map (const char *memory_map)
 {
-  struct gdb_xml_parser *parser;
   VEC(mem_region_s) *result = NULL;
-  struct cleanup *before_deleting_result, *back_to;
+  struct cleanup *back_to;
   struct memory_map_parsing_data data = { NULL };
 
-  back_to = make_cleanup (null_cleanup, NULL);
-  parser = gdb_xml_create_parser_and_cleanup (_("target memory map"),
-                                             memory_map_elements, &data);
-
-  /* Note: 'clear_result' will zero 'result'.  */
-  before_deleting_result = make_cleanup (clear_result, &result);
   data.memory_map = &result;
-
-  if (gdb_xml_parse (parser, memory_map) == 0)
-    /* Parsed successfully, don't need to delete the result.  */
-    discard_cleanups (before_deleting_result);
+  back_to = make_cleanup (clear_result, &result);
+  if (gdb_xml_parse_quick (_("target memory map"), NULL, memory_map_elements,
+                          memory_map, &data) == 0)
+    {
+      /* Parsed successfully, keep the result.  */
+      discard_cleanups (back_to);
+      return result;
+    }
 
   do_cleanups (back_to);
-  return result;
+  return NULL;
 }
 
 #endif /* HAVE_LIBEXPAT */
This page took 0.02463 seconds and 4 git commands to generate.