Chuck,

On 5/31/13 5:46 PM, Caldarale, Charles R wrote:
>> From: Christopher Schultz [mailto:ch...@christopherschultz.net] 
>> Subject: Re: APR/native errors with non-blocking I/O
> 
>> I'm pretty sure that sterror is thread safe: it should just return a
>> static char*.
> 
> Would that it were that simple.  Seriously, it's not thread safe; a
> second thread calling the API can overlay a prior thread's message.
> If it were thread safe, GNU wouldn't have bothered with the _r
> alternative.
> 
>> "For unknown error numbers, the strerror() function will return its 
>> result in a static buffer which may be overwritten by subsequent calls."
>> Hopefully, that means static and private to the thread, but I don't know.
> 
> Nope, it's static and global.

:(

>> Back to the GNU man page, it says: "strerror()  is specified by
>> POSIX.1-2001, C89, C99.  strerror_r() is specified by POSIX.1-2001.", so
>> we may be able to rely upon it.
> 
> Yes, the _r alternative is available on many (probably most, these
> days) platforms, but it's by no means universal.  (On another mailing
> list, we had someone still trying to use gcc 3.3...)

Can 'configure' figure out if strerror_r is available? I have no idea
how it works its magic.

-chris

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to