Fix tracepoint.c:parse_tracepoint_definition leak (and one more)
[deliverable/binutils-gdb.git] / gas / subsegs.c
index eb7919531877fd46189e33948720a9dbd0c1f535..a66af2d3f65c60fb7ebc68ec8872270c875c6500 100644 (file)
@@ -1,5 +1,5 @@
 /* subsegs.c - subsegments -
-   Copyright (C) 1987-2014 Free Software Foundation, Inc.
+   Copyright (C) 1987-2019 Free Software Foundation, Inc.
 
    This file is part of GAS, the GNU Assembler.
 
@@ -55,7 +55,7 @@ subsegs_begin (void)
  * segment context correct.
  */
 void
-subseg_change (register segT seg, register int subseg)
+subseg_change (segT seg, int subseg)
 {
   segment_info_type *seginfo = seg_info (seg);
   now_seg = seg;
@@ -63,7 +63,7 @@ subseg_change (register segT seg, register int subseg)
 
   if (! seginfo)
     {
-      seginfo = (segment_info_type *) xcalloc (1, sizeof (*seginfo));
+      seginfo = XCNEW (segment_info_type);
       seginfo->bfd_section = seg;
       bfd_set_section_userdata (stdoutput, seg, seginfo);
     }
@@ -165,7 +165,7 @@ subseg_get (const char *segname, int force_new)
   if (! seginfo)
     {
       secptr->output_section = secptr;
-      seginfo = (segment_info_type *) xcalloc (1, sizeof (*seginfo));
+      seginfo = XCNEW (segment_info_type);
       seginfo->bfd_section = secptr;
       bfd_set_section_userdata (stdoutput, secptr, seginfo);
     }
@@ -297,6 +297,10 @@ subsegs_print_statistics (FILE *file)
   frchainS *frchp;
   asection *s;
 
+  /* PR 20897 - check to see if the output bfd was actually created.  */
+  if (stdoutput == NULL)
+    return;
+
   fprintf (file, "frag chains:\n");
   for (s = stdoutput->sections; s; s = s->next)
     {
This page took 0.025406 seconds and 4 git commands to generate.