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(&current, &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(&current);
+               //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]

Reply via email to