please try attached patch and report back! tc On Tue, Jun 12, 2001 at 05:40:40PM -0000, [EMAIL PROTECTED] wrote: > ID: 11432 > Updated by: sniper > Reported By: [EMAIL PROTECTED] > Status: Open > Bug Type: Reproducible crash > Operating system: > PHP Version: 4.0.5 > Assigned To: > Comments: > > reproduced with 4.0.6RC3 > > > Previous Comments: > --------------------------------------------------------------------------- > > [2001-06-12 08:29:39] [EMAIL PROTECTED] > Here are two scripts that operates on referenced objects. make.php creates object $b >with reference to object $a as argument. > > After serialize/unserialize show.php checks if the reference still exists. > > PHP 4.0.1pl1 lost references. > PHP 4.0.4pl1 segfaults on show.php > PHP 4.0.5 segfaults on show.php and(!) sometimes on make.php > > Config line: > ./configure --with-pgsql=shared --with-apxs --sysconfdir=/etc --prefix=/usr > --localstatedir =/var --with-config-file-path=/etc/httpd/conf/ > --with-gettext=/usr/share/gettext > > make.php: > <? > class ClassA { > var $arg_a; > }; > > class ClassB { > var $arg_b; > > function ClassB(&$a) { > $this -> arg_b = &$a; > } > }; > > session_start(); > session_destroy(); > session_register("b"); > session_register("a"); > > $a = new ClassA(); > $a -> arg_a = 4; > $b = new ClassB($a); > echo "done. Click <a href="show.php">here</a>"; > ?> > > > show.php: > <? > class ClassA { > var $arg_a; > }; > > class ClassB { > var $arg_b; > > function ClassB(&$a) { > $this -> arg_b = &$a; > } > }; > > session_start(); > $a -> arg_a = 6; > echo $b -> arg_b -> arg_a; > ?> > > --------------------------------------------------------------------------- > > > > ATTENTION! Do NOT reply to this email! > To reply, use the web interface found at http://bugs.php.net/?id=11432&edit=2 > > > -- > PHP Development 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] >
? .session.c.swp Index: session.c =================================================================== RCS file: /repository/php4/ext/session/session.c,v retrieving revision 1.210 diff -u -r1.210 session.c --- session.c 10 Jun 2001 23:26:35 -0000 1.210 +++ session.c 20 Jun 2001 14:47:46 -0000 @@ -405,7 +405,6 @@ PHP_VAR_UNSERIALIZE_INIT(var_hash); - MAKE_STD_ZVAL(current); for (p = q = val; (p < endptr) && (q = memchr(p, PS_DELIMITER, endptr - p)); p = q) { if (p[0] == PS_UNDEF_MARKER) { p++; @@ -418,16 +417,18 @@ name = estrndup(p, namelen); q++; + MAKE_STD_ZVAL(current); if (has_value) { if (php_var_unserialize(¤t, &q, endptr, &var_hash)) { + php_set_session_var(name, namelen, current PSLS_CC); - zval_dtor(current); } } PS_ADD_VARL(name, namelen); efree(name); + zval_ptr_dtor(¤t); + //FREE_ZVAL(current); } - FREE_ZVAL(current); PHP_VAR_UNSERIALIZE_DESTROY(var_hash); return SUCCESS;
-- PHP Development 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]