From: | Josh Kupershmidt <schmiddy(at)gmail(dot)com> |
---|---|
To: | Boszormenyi Zoltan <zb(at)cybertec(dot)at> |
Cc: | Simon Riggs <simon(at)2ndquadrant(dot)com>, Marko Kreen <markokr(at)gmail(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: allowing multiple PQclear() calls |
Date: | 2012-12-11 12:43:08 |
Message-ID: | CAK3UJRGLyuA2w-fsNtpMK0_ZjsxfK-G5v2gjh4FJTScE9iX-Ew@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Tue, Dec 11, 2012 at 5:18 AM, Boszormenyi Zoltan <zb(at)cybertec(dot)at> wrote:
> 2012-12-11 12:45 keltezéssel, Simon Riggs írta:
>
>> On 11 December 2012 10:39, Marko Kreen <markokr(at)gmail(dot)com> wrote:
>>>
>>> On Tue, Dec 11, 2012 at 6:59 AM, Josh Kupershmidt <schmiddy(at)gmail(dot)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
From | Date | Subject | |
---|---|---|---|
Next Message | Pavel Stehule | 2012-12-11 13:01:38 | Re: enhanced error fields |
Previous Message | Boszormenyi Zoltan | 2012-12-11 12:18:27 | Re: allowing multiple PQclear() calls |