I believe, I sorted out most of the issues.
Now, the last problem: what is the official way to deep-copy
non-persistent zval into persistent zval?

I expected zval_copy_ctor to have a flag. Unfortunately, it doesn't have one.

the way I see it:
void zval_copy_ctor(zval *value, zend_bool persistent)

such declaration would break compatibility, so, probably, there's a
need to introduce

zval_pcopy_ctor(zval *value, zend_bool persistent)
{
//…
}

and
#define zval_copy_ctor(v) zval_pcopy_ctor(v, 0)

similiar to how it is done with *alloc functions

--
Alexey Zakhlestin
http://blog.milkfarmsoft.com/

Reply via email to