From: | Magnus Hagander <magnus(at)hagander(dot)net> |
---|---|
To: | Bruce Momjian <bruce(at)momjian(dot)us> |
Cc: | PGSQL Hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: libpq docs about PQfreemem |
Date: | 2007-02-06 08:22:47 |
Message-ID: | 20070206082247.GF6515@svr2.hagander.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Mon, Feb 05, 2007 at 05:21:34PM -0500, Bruce Momjian wrote:
> Magnus Hagander wrote:
> > have this about PQfreemem():
> >
> > Frees memory allocated by <application>libpq</>, particularly
> > <function>PQescapeByteaConn</function>,
> > <function>PQescapeBytea</function>,
> > <function>PQunescapeBytea</function>,
> > and <function>PQnotifies</function>.
> > It is needed by Microsoft Windows, which cannot free memory across
> > DLLs, unless multithreaded DLLs (<option>/MD</option> in VC6) are used.
> > On other platforms, this function is the same as the standard library
> > function <function>free()</>.
> > </para>
> >
> >
> >
> > That's also a very old comment, dating back to when we could build libpq
> > with VC6 only and nothing else. Now we can build with MinGW, Borland,
> > VC2005 and I think also VC2003. Which would add the note that this is
> > also depending on *which compiler* and *which compiler version*.
> > The /MD mention is just one of several different options to select the
> > runtime libraries, so it seems really misplaced.
> >
> > Now, there are two options for this. Either we fix it (I can put
> > together a patch), or we remove it altogether. To me, it seems to be
> > just an implementation detail and some kind of explanation why we're
> > doing it - which would live better in a source code comment than in the
> > docs.
> > This includes the part about how it's just the same as free() on other
> > platforms. That's just an implementation detail, and I assume we don't
> > want people to rely on that - in case we ever want to change it in the
> > future for some reason. (the doc for the other functions say you have to
> > use PQfreemem without mentioning any exceptions)
> >
> > Thoughts? Rip out or update?
>
> Are you saying that almost all Win32 binaries and libraries now can free
> across DLLs?
No, I'm saying that the problem is not just between multithreaded and
not, it's depending on a lot other factors as well. It's actuallyi the
same issue as with PQtrace, which has a better explanation.
FOr example, you can't free() a poniter allocated with the MSVC runtime
library if you're using the Borland runtime librarys version of free().
//Magnus
From | Date | Subject | |
---|---|---|---|
Next Message | jon5pg | 2007-02-06 09:22:07 | Re: Pl/pgsql functions causing crashes in 8.2.2 |
Previous Message | Jonathan Gray | 2007-02-06 07:46:13 | Pl/pgsql functions causing crashes in 8.2.2 |