On Sun, Jan 25, 2009 at 05:08:54PM +0100, Martijn van Oosterhout wrote: > On Sun, Jan 25, 2009 at 03:52:02PM +0000, Roger Leigh wrote: > > > > I'm duplicating text* to char* by hand. > > Is the text_to_cstring available internally also accessible by > > external modules (I didn't see it in any headers)? > > A function like that exists, the "proper" way to do it is (untested): > > DatumGetCString( DirectFunctionCall1(textout, TextGetDatum(foo) ) > > It's used in various places, in the unreleased 8.4 there will be > official functions like cstring_to_text and text_to_cstring. Many other > modules already declare stuff like this. Great, it looks like I'll be able to make things much simpler with 8.4, though I will need to be backward compatible with 8.3 for some time. > > After every PG_GETARG_TEXT_PP, I've called PG_FREE_IF_COPY before > > returning. However, I saw in citext (the behaviour of which I > > duplicated in debversion_smaller and debversion_larger (lines 221-246)) > > that you *don't* use PG_FREE_IF_COPY before returning one of the two > > values. Is this not a potential memory leak? Don't you need to > > duplicate your chosen value, then free both of the temporary values? > > Memory leaks are not an issue generally, everything you allocate gets > freed at the end of the statement, if not earlier. Normally you don't > manually free at all, however code that might be used by indexes is > somewhat of an exception, since they might be called often in a tight > loop. smaller/larger are not index functions, but the cmp function is. > > Though your strings here are probably short enough you won't notice > either way. Thanks for the clarification, I wasn't aware everything was automatically freed. The stricter requirements for index operators does make sense. > > I also noticed that I couldn't include some postgres headers in > > my code (e.g. <access/builtins.h>) due to included headers > > <nodes/parsenodes.h> and <nodes/primnodes.h> using invalid C++ syntax > > C++ incompatability has been noted before and patches were posted. I > don't remember right now what happened to them, check the archives. Ah, thanks. I won't file a bug if it's already a known issue. Thanks again, Roger -- .''`. Roger Leigh : :' : Debian GNU/Linux http://people.debian.org/~rleigh/ `. `' Printing on GNU/Linux? http://gutenprint.sourceforge.net/ `- GPG Public Key: 0x25BFB848 Please GPG sign your mail.
Attachment:
signature.asc
Description: Digital signature