Re: Seg fault when using active_symbol_table called from userspace function.

From: Date: Sun, 01 Nov 2009 23:15:38 +0000
Subject: Re: Seg fault when using active_symbol_table called from userspace function.
References: 1 2 3 4  Groups: php.internals 
Request: Send a blank email to internals+get-45932@lists.php.net to get a copy of this message
Scott MacVicar wrote:
On 1 Nov 2009, at 21:41, Mark Skilbeck wrote:
Scott MacVicar wrote:
On 1 Nov 2009, at 21:09, Mark Skilbeck <markskilbeck@gmail.com> wrote:
[snip]
There is no symbol table as there are no variables. You should check if it's NULL before using zend_hash_exists. Scott
Hi, Scott. I'm having trouble - I added the check to see if the symbol table i available, yet it returns false even if I have added variables within the function: [code] PHP_FUNCTION(sample_var_a_exists) {
    if (!EG(active_symbol_table) ||
            !zend_hash_exists(EG(active_symbol_table), "a", sizeof("a"))) {
        RETURN_BOOL(0);
    }
    RETURN_BOOL(1);
} [/code] [code] $a = ''; var_dump(sample_var_a_exists()); function x() {
    $a = ''; // Add a symbol to the hash table.
    var_dump(sample_var_a_exists()); // Shows bool(false)
} x(); [/code] --
You probably want the following to build the symbol table.
    if (!EG(active_symbol_table)) {
        zend_rebuild_symbol_table(TSRMLS_C);
    }
Scott
Yes, that works. Do you know why we have to rebuild it? I'd assume that the symbol table was built automatically?

« previous php.internals (#45932) next »