Re: [HACKERS] pg_dump, and strings
От | Tom Lane |
---|---|
Тема | Re: [HACKERS] pg_dump, and strings |
Дата | |
Msg-id | 18986.941326372@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | pg_dump, and strings ("Ansley, Michael" <Michael.Ansley@intec.co.za>) |
Список | pgsql-hackers |
"Ansley, Michael" <Michael.Ansley@intec.co.za> writes: > In pg_dump there is a file called common.c. This file has some string > handling routines in it that return a pointer to a fixed-length, static > string (char *). I need to remove the fixed-length bit (besides the fact > fact that this is horrendously un-threadsafe). So, what is the best > mechanism to use on replacement? There seem to be two fairly standard > methods to use, a) make the calling function allocate the memory it > requires, and pass that in to the called function, or b) the called function > allocates memory using a documented call (say, malloc), and hands > responsibility for freeing the memory to the calling function. Given the > non-fixed-length constraint, the second option would appear better, but does > any body out there have any other ideas? The first approach requires that the caller know in advance how much result space the callee will need; unless the return type is fixed-size that's usually a bad design. Another possibility is to do something like the backend's palloc() stuff, wherein responsibility for eventually cleaning up the garbage is handed to a third party. But that's probably overkill for pg_dump. regards, tom lane
В списке pgsql-hackers по дате отправления: