This is the mail archive of the mailing list for the glibc project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 2/4] getaddrinfo: Avoid negating error values

----- Original Message -----
> From: "Joseph S. Myers" <>
> To: "Pavel Simerda" <>
> Cc: "libc-alpha" <>, "Siddhesh Poyarekar" <>
> 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?


> 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?


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?


before: 0, -ERROR [always non-positive]
after: 0, ERROR [always non-negative]


before: 0, -ERROR, gaih_inet_serv() [always non-positive]
after: 0, ERROR, gaih_inet_serv() [always non-negative]


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.



> --
> Joseph S. Myers

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]