On Sun, Aug 05, 2001 at 01:46:35PM +0200, Thies C. Arntzen wrote:
> 
>     hi,
>     the following code breaks php:

    after some more testing:

    it seems that one can no longer call
    "zend_register_internal_class" when the script is already
    executing.

    my testscript unserializes an object from a class that has
    no definition loaded, so we call
    php_create_incomplete_class() to setup our "incomplete
    class". this used to work just fine...

...
zend_class_entry *php_create_incomplete_class(TSRMLS_D)
{
    zend_class_entry incomplete_class;
 
    INIT_OVERLOADED_CLASS_ENTRY(incomplete_class, INCOMPLETE_CLASS, NULL,
            incomplete_class_call_func,
            incomplete_class_get_property,
            incomplete_class_set_property);
 
    BG(incomplete_class) = zend_register_internal_class(&incomplete_class TSRMLS_CC);
 
    return (BG(incomplete_class));
}
...
    
    this together with (atleast) one user-level class will cause
    the mentioned crash. i tend to think that something in zend
    is causing this. zeev, andi?

    BTW: if i call php_create_incomplete_class() from
    MINIT(basic_functions) the problem "goes away".

    tc

> 
> <?php
> class tubu { }
> $thies = unserialize('O:1:"a":0:{}');
> ?>
> 
> X-Powered-By: PHP/4.0.7-dev
> Content-type: text/html
> 
> ../../php4/Zend/zend_hash.c(176) :  Freeing 0x084B3A54 (64 bytes), script=../ser2.php
> Last leak repeated 1 time
> ../../php4/Zend/zend_compile.c(1532) :  Freeing 0x084B39AC (4 bytes), 
>script=../ser2.php
> ../../php4/Zend/zend_language_scanner.l(1144) :  Freeing 0x084B390C (5 bytes), 
>script=../ser2.php
> [Sun Aug  5 13:44:17 2001]  Script:  '../ser2.php'
> ---------------------------------------
> ../../php4/Zend/zend_opcode.c(117) : Block 0x084B3988 status:
> Beginning:    Overrun (magic=0x08450298, expected=0x7312F8DC)
>       End:    Unknown
> ---------------------------------------
> [Sun Aug  5 13:44:17 2001]  Script:  '../ser2.php'
> ---------------------------------------
> ../../php4/Zend/zend_hash.c(548) : Block 0x084B39C0 status:
> Beginning:    Overrun (magic=0x40B49080, expected=0x7312F8DC)
>       End:    Unknown
> ---------------------------------------
> [Sun Aug  5 13:44:17 2001]  Script:  '../ser2.php'
> ---------------------------------------
> ../../php4/Zend/zend_hash.c(548) : Block 0x084B3A30 status:
> Beginning:    Overrun (magic=0x40B49040, expected=0x7312F8DC)
>       End:    Unknown
> ---------------------------------------
> 
>     if you comment out the tubu class everything works. i'm not
>     too sure if this is due to saschas work in var.c or some
>     changes in the engine.
> 
>     does anybody have a clue what might be wrong?
> 
>     re,
>     tc
> 
> 
> -- 
> 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]
> 

-- 
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