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...
Zeev
> > please check it?
>
> will do -
>
> tc
> >
> > At 18:54 13/2/2001, Thies C. Arntzen wrote:
> > >thies Tue Feb 13 08:54:48 2001 EDT
> > >
> > > Modified files:
> > > /php4/ext/pgsql pgsql.c
> > > Log:
> > > @- fixes PostgeSQL pg_connect() bug. We would sometimes close the
> default
> > > @ link by acciedent. (Patch by: [EMAIL PROTECTED])
> > >
> > >
> > >Index: php4/ext/pgsql/pgsql.c
> > >diff -u php4/ext/pgsql/pgsql.c:1.85 php4/ext/pgsql/pgsql.c:1.86
> > >--- php4/ext/pgsql/pgsql.c:1.85 Wed Jan 31 13:53:29 2001
> > >+++ php4/ext/pgsql/pgsql.c Tue Feb 13 08:54:48 2001
> > >@@ -17,7 +17,7 @@
> > >
> +----------------------------------------------------------------------+
> > > */
> > >
> > >-/* $Id: pgsql.c,v 1.85 2001/01/31 21:53:29 andi Exp $ */
> > >+/* $Id: pgsql.c,v 1.86 2001/02/13 16:54:48 thies Exp $ */
> > >
> > > #include <stdlib.h>
> > >
> > >@@ -114,9 +114,10 @@
> > > {
> > > PGLS_FETCH();
> > >
> > >- if (PGG(default_link)!=-1) {
> > >+ if ((PGG(default_link) != -1) && (PGG(default_link) != id)) {
> > > zend_list_delete(PGG(default_link));
> > > }
> > >+
> > > if (PGG(default_link) != id) {
> > > PGG(default_link) = id;
> > > zend_list_addref(id);
> > >
> > >
> > >
> > >--
> > >PHP CVS Mailing List (http://www.php.net/)
> > >To unsubscribe, e-mail: [EMAIL PROTECTED]
> > >For additional commands, e-mail: [EMAIL PROTECTED]
> > >To contact the list administrators, e-mail: [EMAIL PROTECTED]
> >
> > --
> > Zeev Suraski <[EMAIL PROTECTED]>
> > CTO & co-founder, Zend Technologies Ltd. http://www.zend.com/
> >
> >
> > --
> > PHP CVS Mailing List (http://www.php.net/)
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> > To contact the list administrators, e-mail: [EMAIL PROTECTED]
> >
> >
> >
>
>--
>PHP CVS Mailing List (http://www.php.net/)
>To unsubscribe, e-mail: [EMAIL PROTECTED]
>For additional commands, e-mail: [EMAIL PROTECTED]
>To contact the list administrators, e-mail: [EMAIL PROTECTED]
--
Zeev Suraski <[EMAIL PROTECTED]>
CTO & co-founder, Zend Technologies Ltd. http://www.zend.com/
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]