Re: cvs: php4 /ext/pgsql pgsql.c

From: Date: Thu, 15 Feb 2001 11:58:02 +0000
Subject: Re: cvs: php4 /ext/pgsql pgsql.c
References: 1 2 3 4 5  Groups: php.cvs 
Request: Send a blank email to php-cvs+get-4039@lists.php.net to get a copy of this message
On Thu, Feb 15, 2001 at 01:47:46PM +0200, Zeev Suraski wrote: > At 13:01 15/2/2001, Thies C. Arntzen wrote: > >On Thu, Feb 15, 2001 at 04:17:06AM +0200, Zeev Suraski wrote: > > > This patch won't always work (it may cause the link not to be closed when > > > it's supposed to). I committed a different patch to the CVS - can you > > > > under what circumstances? > > Well, if you have an open link, and then you reopen the same link, then the > original code would fail. Why? > > pgsql_connect(); // default_link is -1, so no ref-- is > done. ref is 1 after it, and link is set to n (e.g. 2) > pgsql_connect(); // default_link is 2, ref is 1, so ref-- > brings it to 0, deletes it, and only afterwards theres ref++ which brings > it to 1, but it's already too late > > with the original patch: > pgsql_connect(); // default_link is -1, so no ref-- is > done. ref is 1 after it, and link is set to n (e.g. 2) > pgsql_connect(); // default link is 2, ref is 1. with the > patch, no ref-- is done, and then there's a ref++ - which brings ref to > 2. this refcount is wrong... > > with my patch: > pgsql_connect(); // default_link is -1, so no ref-- is > done. ref is 1 after it, and link is set to n (e.g. 2) > pgsql_connect(); // default_link is 2, ref++ brings it the > refcount to 2, ref-- brings it back to 1. all is well... ok - got you. tc

« previous php.cvs (#4039) next »