[PATCH 2/4] getaddrinfo: Avoid negating error values
Pavel Simerda
psimerda@redhat.com
Mon Dec 9 18:23:00 GMT 2013
----- Original Message -----
> From: "Joseph S. Myers" <joseph@codesourcery.com>
> To: "Pavel Simerda" <psimerda@redhat.com>
> Cc: "libc-alpha" <libc-alpha@sourceware.org>, "Siddhesh Poyarekar" <siddhesh@redhat.com>
> Sent: Monday, December 9, 2013 7:00:24 PM
> Subject: Re: [PATCH 2/4] getaddrinfo: Avoid negating error values
>
> On Mon, 9 Dec 2013, Pavel Simerda wrote:
>
> > There's no reason for negating the error values in the current code.
>
> Could you clarify the underlying analysis more?
Sure.
> Is it always the case in
> the present code that the error numbers get negated an even number of
> times on their way to the user, and this patch changes that number to be
> 0?
Yes.
It's easier than that. The getaddrinfo() function must only return an unmodified error value. After applying the patch, the error value goes unmodified from the constant expression to the user.
> What's the before-and-after interface for which functions return an
> error number, or a negated error number, and what are the users for
> functions whose return value semantics you've changed?
gaih_inet_serv():
before: 0, -ERROR [always non-positive]
after: 0, ERROR [always non-negative]
gaih_inet():
before: 0, -ERROR, gaih_inet_serv() [always non-positive]
after: 0, ERROR, gaih_inet_serv() [always non-negative]
getaddrinfo():
before: 0, ERROR, -gaih_inet() [always non-negative]
after: 0, ERROR, gaih_inet() [always non-negative]
Overall behavior:
before: In the code, -ERROR is always used, getaddrinfo() would negate it back to ERROR or return ERROR on its own.
after: In the code, ERROR is always used, getaddrinfo() returns it directly or returns ERROR on its own.
> Do none of those
> functions have a comment above them describing the return value semantics,
> which would need updating?
Nope, there are no comments about returned values.
Cheers,
Pavel
> --
> Joseph S. Myers
> joseph@codesourcery.com
>
More information about the Libc-alpha
mailing list