On 1 Nov 2009, at 21:09, Mark Skilbeck <markskilb...@gmail.com> wrote:
Can you explain to me why the following causes a segfault:
[code]
PHP_FUNCTION(sample_var_a_exists)
{
if (!zend_hash_exists(EG(active_symbol_table), "a", sizeof("a"))) {
RETURN_BOOL(0);
}
RETURN_BOOL(1);
}
[/code]
Note: the segfault only occurs when the sample_var_a_exists function
is called from within a userspace function:
[code]
$a = '';
var_dump(sample_var_a_exists()); // bool(true)
function x() {
var_dump(sample_var_a_exists()); // segmentation fault
}
x()
There is no symbol table as there are no variables. You should check
if it's NULL before using zend_hash_exists.
Scott
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php