From: Tom Lane [mailto:t...@sss.pgh.pa.us]
> BTW, I found another spot in descriptor.c where ecpglib is using
> setlocale() for the same purpose.  Perhaps that one's not reachable
> in threaded apps, but I didn't see any obvious reason to think so,
> so I changed it too.

Ouch, thanks.  And I'm sorry to annoy you by pointing out a trivial thing: in 
v3 patch, _configthreadlocale() is not called to restore the original value 
when setlocale() or ecpg_strdup() fails.  I hope this is fixed in v4.

+ #ifdef WIN32
+       stmt->oldthreadlocale = _configthreadlocale(_ENABLE_PER_THREAD_LOCALE);
+       if (stmt->oldthreadlocale == -1)
+       {
+               ecpg_do_epilogue(stmt);
+               return false;
+       }
+ #endif
        stmt->oldlocale = ecpg_strdup(setlocale(LC_NUMERIC, NULL), lineno);
        if (stmt->oldlocale == NULL)
        {

Regards
Takayuki Tsunakawa



Reply via email to