On 12/19/22 16:16, Mark Wielaard wrote:
> Hi Martin,
> 
> On Mon, 2022-12-19 at 15:21 +0100, Martin Liška wrote:
>>>> +      else
>>>> +    error (0, 0, "Couldn't get chdr for section %zd", ndx);
>>>
>>> Shouldn't this error be fatal?
>>
>> What do you use for fatal errors?
> 
> Depends a bit on context. It might be that this error isn't fatal, then
> zero as first (status) argument is fine, just know that the program
> will just continue. And it looked like not all callers were prepared
> for this function to return with a bogus return value.
> 
> If it is fatal then depending on context you either call error_exit (0,
> "Couldn't get chdr for section %zd", ndx); [see system.h, this really
> is just error (EXIT_FAILURE, 0, ...)] if the program needs to terminate
> right now.
> 
> Or you return a special value from the function (assuming all callers
> check for an error here). And/Or if the program needs a cleanup you'll
> goto cleanup (as is done in process_file).

I think it's fine as we return UNSET in that case and the caller goes directly
to cleanup (or abort is called for the second call site):

          enum ch_type schtype = get_section_chtype (scn, shdr, sname, ndx);
          if (schtype == UNSET)
            goto cleanup;

Martin

> 
> Cheers,
> 
> Mark

Reply via email to