[freetds] Using freetds in Windows

Christos Zoulas christos at zoulas.com
Mon Jan 11 23:05:51 EST 2010


On Jan 11,  9:56pm, jklowden at freetds.org ("James K. Lowden") wrote:
-- Subject: Re: [freetds] Using freetds in Windows

| Christos Zoulas wrote:
| > I think Win32 strerror(3) is threadsafe. 
| > 
| > Even when doing i18n? 
| 
| AFAIK.  I don't see any technical reason why not.  

Well, to be thread-safe it needs to use per-thread local storage
for the returned string since it cannot know what the string will
contain. It is easier to punt and do the simple:

char *
strerror(int num)
{
        static char buf[NL_TEXTMAX];
        int error = strerror_r(num, buf, sizeof(buf));
        if (error)
                errno = error;
        return buf;
}

This is why one should be using strerror_r() if it exists, or protect
strerror() with a mutex if it does not.

christos



More information about the FreeTDS mailing list