Tom Lane wrote:
> >> Well at least on glibc-2.2 it seems that setlocale retuns a pointer to
> >> malloced memory, and frees this pointer on subsequent calls to
> >> setlocale.
> >> So I would kindly ask you to take a second look at every invokation of
> >> setlocale.
> I looked around, and am worried about the behavior of PGLC_current()
> in src/backend/utils/adt/pg_locale.c. It doesn't change locale but
> does retrieve several successive setlocale() results. Does that work
> in glibc?
Well actually I did not check glibc's source code. But I tried to run my
program with efence and it aborted in execute.c
setlocale(LC_NUMERIC,locale); // access to already freed memory
So my best guess is that setlocale
- uses a malloced memory for return (which copes best with variable length
- frees this on a subsequent calls and allocates a new one.
Yes, I'm worried about PGLC_current(), too.
IMHO we should definitely copy the result to a malloced area.
Does the current solution work with static storage (old libcs?)? The last
call would overwrite the first result, wouldn't it?
In response to
pgsql-hackers by date
|Next:||From: Hannu Krosing||Date: 2001-09-27 08:00:41|
|Subject: Re: multibyte performance|
|Previous:||From: Myron Scott||Date: 2001-09-27 05:24:29|
|Subject: Re: Spinlock performance improvement proposal |
pgsql-patches by date
|Next:||From: Karel Zak||Date: 2001-09-27 08:49:24|
|Subject: Re: [PATCHES] Problem with setlocale (found in libecpg) [accessing a|
|Previous:||From: Tom Lane||Date: 2001-09-27 04:08:29|
|Subject: Re: Problem with setlocale (found in libecpg) [accessing a |