From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 104796 invoked by alias); 27 Feb 2020 06:37:03 -0000 Mailing-List: contact binutils-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: binutils-owner@sourceware.org Received: (qmail 104788 invoked by uid 89); 27 Feb 2020 06:37:03 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.1 spammy= X-HELO: mail-pj1-f44.google.com Received: from mail-pj1-f44.google.com (HELO mail-pj1-f44.google.com) (209.85.216.44) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 27 Feb 2020 06:37:02 +0000 Received: by mail-pj1-f44.google.com with SMTP id j17so734552pjz.3 for ; Wed, 26 Feb 2020 22:37:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:subject:message-id:mime-version:content-disposition :user-agent; bh=sdw+JblNy21VH3GrL3GwZd3qjHaFYHoYd2XLawvs5WU=; b=Kmi2Thg4CSPbXmjc+izTtOYMTDkfFa56u1qG7uWdUhYXrD97ioVvSVENRA6JNTujxH L6LYVULVtizZpCLSTiTKD+8z/AAVzzNgtli5STnvxYmRSNxn8AZkWNXmm6yXPIJiyFPd 11KDyHlWVTv9xHecFTKR5Wr9TjHSDAa4I8SHhbyEJZwMsHI312Pzh6h0/jQHkxq56IUz Yf1D6c0F60y64jYu33k19iUxlmgzFVUS4LuFMsSTkZ2NDq4NByul/KZ8NaMAJ6qX6ebE V8DlQq3OGZ+2rPvS90OTEvQOVFEFqTwcyZ8mBOu5faeG2B52iv+Uww1bK8KU5XlAOAJz GGJA== Return-Path: Received: from bubble.grove.modra.org ([2406:3400:51d:8cc0:f0f9:e27c:1d26:4e5e]) by smtp.gmail.com with ESMTPSA id 26sm5027029pjk.3.2020.02.26.22.36.58 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 26 Feb 2020 22:36:59 -0800 (PST) Received: by bubble.grove.modra.org (Postfix, from userid 1000) id D5765806B5; Thu, 27 Feb 2020 17:06:55 +1030 (ACDT) Date: Thu, 27 Feb 2020 06:37:00 -0000 From: Alan Modra To: binutils@sourceware.org Subject: _bfd_xcoff_read_ar_hdr tidy Message-ID: <20200227063655.GF32593@bubble.grove.modra.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.9.4 (2018-02-28) X-IsSubscribed: yes X-SW-Source: 2020-02/txt/msg00555.txt.bz2 One block is better than two. * coff-rs6000.c (_bfd_xcoff_read_ar_hdr): Put all data in one malloc'd block. diff --git a/bfd/coff-rs6000.c b/bfd/coff-rs6000.c index 8b8f472504..1cc708ce1b 100644 --- a/bfd/coff-rs6000.c +++ b/bfd/coff-rs6000.c @@ -1491,32 +1491,23 @@ _bfd_xcoff_read_ar_hdr (bfd *abfd) { bfd_size_type namlen; struct areltdata *ret; - bfd_size_type amt = sizeof (struct areltdata); - - ret = (struct areltdata *) bfd_zmalloc (amt); - if (ret == NULL) - return NULL; + bfd_size_type amt; if (! xcoff_big_format_p (abfd)) { struct xcoff_ar_hdr hdr; struct xcoff_ar_hdr *hdrp; - if (bfd_bread (&hdr, (bfd_size_type) SIZEOF_AR_HDR, abfd) - != SIZEOF_AR_HDR) - { - free (ret); - return NULL; - } + if (bfd_bread (&hdr, SIZEOF_AR_HDR, abfd) != SIZEOF_AR_HDR) + return NULL; GET_VALUE_IN_FIELD (namlen, hdr.namlen, 10); - amt = SIZEOF_AR_HDR + namlen + 1; - hdrp = (struct xcoff_ar_hdr *) bfd_alloc (abfd, amt); - if (hdrp == NULL) - { - free (ret); - return NULL; - } + amt = sizeof (struct areltdata) + SIZEOF_AR_HDR + namlen + 1; + ret = (struct areltdata *) bfd_malloc (amt); + if (ret == NULL) + return ret; + + hdrp = (struct xcoff_ar_hdr *) (ret + 1); memcpy (hdrp, &hdr, SIZEOF_AR_HDR); if (bfd_bread ((char *) hdrp + SIZEOF_AR_HDR, namlen, abfd) != namlen) { @@ -1534,21 +1525,16 @@ _bfd_xcoff_read_ar_hdr (bfd *abfd) struct xcoff_ar_hdr_big hdr; struct xcoff_ar_hdr_big *hdrp; - if (bfd_bread (&hdr, (bfd_size_type) SIZEOF_AR_HDR_BIG, abfd) - != SIZEOF_AR_HDR_BIG) - { - free (ret); - return NULL; - } + if (bfd_bread (&hdr, SIZEOF_AR_HDR_BIG, abfd) != SIZEOF_AR_HDR_BIG) + return NULL; GET_VALUE_IN_FIELD (namlen, hdr.namlen, 10); - amt = SIZEOF_AR_HDR_BIG + namlen + 1; - hdrp = (struct xcoff_ar_hdr_big *) bfd_alloc (abfd, amt); - if (hdrp == NULL) - { - free (ret); - return NULL; - } + amt = sizeof (struct areltdata) + SIZEOF_AR_HDR_BIG + namlen + 1; + ret = (struct areltdata *) bfd_malloc (amt); + if (ret == NULL) + return ret; + + hdrp = (struct xcoff_ar_hdr_big *) (ret + 1); memcpy (hdrp, &hdr, SIZEOF_AR_HDR_BIG); if (bfd_bread ((char *) hdrp + SIZEOF_AR_HDR_BIG, namlen, abfd) != namlen) { -- Alan Modra Australia Development Lab, IBM