mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Fixed SEPARATE_ZVAL() to support objects and resources
This commit is contained in:
parent
54095e8c56
commit
5b5367ddbb
1 changed files with 14 additions and 9 deletions
23
Zend/zend.h
23
Zend/zend.h
|
@ -680,15 +680,20 @@ END_EXTERN_C()
|
|||
Z_UNSET_ISREF_P(z); \
|
||||
} while (0)
|
||||
|
||||
// TODO: support objects and resources???
|
||||
#define SEPARATE_ZVAL(zv) do { \
|
||||
if (Z_REFCOUNTED_P(zv)) { \
|
||||
if (Z_REFCOUNT_P(zv) > 1) { \
|
||||
Z_DELREF_P(zv); \
|
||||
zval_copy_ctor(zv); \
|
||||
Z_SET_REFCOUNT_P(zv, 1); \
|
||||
} \
|
||||
} \
|
||||
// TODO: support objects and resources in more optimal way ???
|
||||
#define SEPARATE_ZVAL(zv) do { \
|
||||
if (Z_REFCOUNTED_P(zv)) { \
|
||||
if (Z_REFCOUNT_P(zv) > 1) { \
|
||||
if (Z_TYPE_P(zv) == IS_OBJECT || \
|
||||
Z_TYPE_P(zv) == IS_RESOURCE) { \
|
||||
Z_ADDREF_P(zv); \
|
||||
} else { \
|
||||
Z_DELREF_P(zv); \
|
||||
zval_copy_ctor(zv); \
|
||||
Z_SET_REFCOUNT_P(zv, 1); \
|
||||
} \
|
||||
} \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define SEPARATE_ZVAL_IF_NOT_REF(zv) \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue