Variant作为函数返回值
owenliang opened this issue · comments
以Object的get方法为例:
inline Variant get(const char *name)
{
Variant retval;
zval rv;
zval *member_p = zend_read_property(Z_OBJCE_P(ptr()), ptr(), name, strlen(name), 0, &rv);
if (member_p != &rv)
{
ZVAL_COPY(retval.ptr(), member_p);
}
else
{
ZVAL_COPY_VALUE(retval.ptr(), member_p);
}
return retval;
}
我这样接收返回值:
Variant a = _this.get("domain");
按照我的理解,a会浅复制get的返回值Variant,然后返回值Varient析构和a析构会对zval形成2次释放。
但是实际上并没有发生double free,求分析一下。