Re: allowing multiple PQclear() calls
От | Josh Kupershmidt |
---|---|
Тема | Re: allowing multiple PQclear() calls |
Дата | |
Msg-id | CAK3UJRGLyuA2w-fsNtpMK0_ZjsxfK-G5v2gjh4FJTScE9iX-Ew@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: allowing multiple PQclear() calls (Boszormenyi Zoltan <zb@cybertec.at>) |
Ответы |
Re: allowing multiple PQclear() calls
|
Список | pgsql-hackers |
On Tue, Dec 11, 2012 at 5:18 AM, Boszormenyi Zoltan <zb@cybertec.at> wrote: > 2012-12-11 12:45 keltezéssel, Simon Riggs írta: > >> On 11 December 2012 10:39, Marko Kreen <markokr@gmail.com> wrote: >>> >>> On Tue, Dec 11, 2012 at 6:59 AM, Josh Kupershmidt <schmiddy@gmail.com> >>> wrote: >>>> >>>> Would it be crazy to add an "already_freed" flag to the pg_result >>>> struct which PQclear() would set, or some equivalent safety mechanism, >>>> to avoid this hassle for users? >>> >>> Such mechanism already exist - you just need to set >>> your PGresult pointer to NULL after each PQclear(). >> >> So why doesn't PQclear() do that? > > > Because then PQclear() would need a ** not a *. Do you want its > interface changed for 9.3 and break compatibility with previous versions? > Same can be said for e.g. PQfinish(). Calling it again crashes your client, > as I have recently discovered when I added atexit() functions that > does "if (conn) PQfinish(conn);" and the normal flow didn't do conn = NULL; > after it was done. Ah, well. I guess using a macro like: #define SafeClear(res) do {PQclear(res); res = NULL;} while (0); will suffice for me. Josh
В списке pgsql-hackers по дате отправления: