On Fri, 22 Oct 2010 22:22:06 +0100, Martin Jansen <mar...@divbyzero.net>
wrote:
I'm trying to store zvals in a hash table which is part of a resource.
Unfortunately the zvals do not seem to "persist" between function calls:
[...]
ALLOC_HASHTABLE(ctx->variables);
zend_hash_init(ctx->variables, 32, NULL, NULL, 0);
You probably want to give a destructor to zend_hash_init, since you're
storing zvals, that would be ZVAL_PTR_DTOR.
[...]
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rsz",
&zcontext, &name, &name_len, &value) == FAILURE)
{
return;
}
ZEND_FETCH_RESOURCE(ctx, foo_context*, &zcontext, -1,
FOO_CONTEXT_RES_NAME, le_adl_context);
zend_hash_update(ctx->variables, name, name_len + 1, &value,
sizeof(zval*), NULL);
You're not incrementing the refcount of the value you're adding to the
hash table. Call zval_add_ref.
--
Gustavo Lopes
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php