]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
aoutx.h tidy
authorAlan Modra <amodra@gmail.com>
Fri, 7 Nov 2014 09:48:25 +0000 (20:18 +1030)
committerAlan Modra <amodra@gmail.com>
Fri, 7 Nov 2014 10:10:41 +0000 (20:40 +1030)
Save a multiplication, and any concern that the buffer allocation
might be smaller than the amount read (as it could be if the header
size isn't a multiple of EXTERNAL_NLIST_SIZE).

* aoutx.h (aout_get_external_symbols): Tidy allocation of symbol buffer.

bfd/ChangeLog
bfd/aoutx.h

index 27edf4fbf115f1272da1d4bab6fdf09a23af618a..a9c8c16accce60dd99db2346fba47eed7dd45410 100644 (file)
@@ -1,3 +1,7 @@
+2014-11-07  Alan Modra  <amodra@gmail.com>
+
+       * aoutx.h (aout_get_external_symbols): Tidy allocation of symbol buffer.
+
 2014-11-07  Alan Modra  <amodra@gmail.com>
 
        * archive.c (_bfd_slurp_extended_name_table): Revert bfd_get_size check.
index bef59b423667fab30cf26666391de17e08149d12..9385a98570d9abc6e7faa35b7a906d9e6c6d149b 100644 (file)
@@ -1300,14 +1300,14 @@ aout_get_external_symbols (bfd *abfd)
     {
       bfd_size_type count;
       struct external_nlist *syms;
+      bfd_size_type amt = exec_hdr (abfd)->a_syms;
 
-      count = exec_hdr (abfd)->a_syms / EXTERNAL_NLIST_SIZE;
+      count = amt / EXTERNAL_NLIST_SIZE;
       if (count == 0)
        return TRUE;            /* Nothing to do.  */
 
 #ifdef USE_MMAP
-      if (! bfd_get_file_window (abfd, obj_sym_filepos (abfd),
-                                exec_hdr (abfd)->a_syms,
+      if (! bfd_get_file_window (abfd, obj_sym_filepos (abfd), amt,
                                 &obj_aout_sym_window (abfd), TRUE))
        return FALSE;
       syms = (struct external_nlist *) obj_aout_sym_window (abfd).data;
@@ -1315,20 +1315,16 @@ aout_get_external_symbols (bfd *abfd)
       /* We allocate using malloc to make the values easy to free
         later on.  If we put them on the objalloc it might not be
         possible to free them.  */
-      syms = (struct external_nlist *) bfd_malloc (count * EXTERNAL_NLIST_SIZE);
+      syms = (struct external_nlist *) bfd_malloc (amt);
       if (syms == NULL)
        return FALSE;
 
-      {
-       bfd_size_type amt;
-       amt = exec_hdr (abfd)->a_syms;
-       if (bfd_seek (abfd, obj_sym_filepos (abfd), SEEK_SET) != 0
-           || bfd_bread (syms, amt, abfd) != amt)
-         {
-           free (syms);
-           return FALSE;
-         }
-      }
+      if (bfd_seek (abfd, obj_sym_filepos (abfd), SEEK_SET) != 0
+         || bfd_bread (syms, amt, abfd) != amt)
+       {
+         free (syms);
+         return FALSE;
+       }
 #endif
 
       obj_aout_external_syms (abfd) = syms;