Hi Chip,
On 1/27/20 3:18 AM, Chip Davis wrote:
MSVCRT__locale_t CDECL MSVCRT__get_current_locale(void) {
- int i; MSVCRT__locale_t loc = MSVCRT_malloc(sizeof(MSVCRT__locale_tstruct)); if(!loc) return NULL;
- loc->locinfo = get_locinfo();
- loc->mbcinfo = get_mbcinfo();
- InterlockedIncrement(&loc->locinfo->refcount);
- InterlockedIncrement(&loc->mbcinfo->refcount);
- loc->locinfo = MSVCRT_malloc(sizeof(MSVCRT_threadlocinfo));
- loc->mbcinfo = MSVCRT_malloc(sizeof(MSVCRT_threadmbcinfo));
A quick testing shows that consecutive _get_current_locale calls return identical locinfo/mbcinfo pointers. It's probably the setlocale function that needs to not reuse some strctures when refcount was icreased.
Thanks, Piotr