PATCH: Avoid warning from -Wjump-misses-init

H.J. Lu hjl.tools@gmail.com
Sun Jun 21 21:40:00 GMT 2009


On Sat, Jun 20, 2009 at 9:46 PM, Ian Lance Taylor<iant@google.com> wrote:
> "H.J. Lu" <hongjiu.lu@intel.com> writes:
>
>> Index: bfd/elflink.c
>> ===================================================================
>> --- bfd/elflink.c     (revision 6199)
>> +++ bfd/elflink.c     (working copy)
>> @@ -3549,7 +3549,11 @@ elf_link_add_object_symbols (bfd *abfd,
>>         unsigned long shlink;
>>
>>         if (!bfd_malloc_and_get_section (abfd, s, &dynbuf))
>> -         goto error_free_dyn;
>> +         {
>> +error_free_dyn:
>> +           free (dynbuf);
>> +           goto error_return;
>> +         }
>>
>>         elfsec = _bfd_elf_section_from_bfd_section (abfd, s);
>>         if (elfsec == SHN_BAD)
>> @@ -3633,11 +3637,7 @@ elf_link_add_object_symbols (bfd *abfd,
>>                 amt = strlen (fnm) + 1;
>>                 anm = bfd_alloc (abfd, amt);
>>                 if (anm == NULL)
>> -                 {
>> -                 error_free_dyn:
>> -                   free (dynbuf);
>> -                   goto error_return;
>> -                 }
>> +                 goto error_free_dyn;
>
>
> This doesn't seem to me to be a good fix.  This code is ugly.  If you're
> going to touch it, clean it up.  error_free_dyn should be at the end of
> the function, like all the other error labels.
>

dybuf is a local variable in that block. It is allocated and freed
within that block. My fix is the minimal one.

-- 
H.J.



More information about the Binutils mailing list