X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=missing.h;h=a9da727fce1439065c735c2bde725c4ac2a34501;hp=d767f40c7cf2733a42576a131c6b2e0a6035530d;hb=c0fd8021cff2c4a134937098ef4fa9779c1924bd;hpb=fb0079dc9e944b18f9ef7abb70e3d2b5cccf2a9c diff --git a/missing.h b/missing.h index d767f40..a9da727 100644 --- a/missing.h +++ b/missing.h @@ -71,6 +71,19 @@ # define ZVAL_ADDREF Z_ADDREF_P #endif +#ifndef SEPARATE_ARG_IF_REF +#define SEPARATE_ARG_IF_REF(zv) \ + if (PZVAL_IS_REF(zv)) { \ + zval *ov = zv; \ + ALLOC_INIT_ZVAL(zv); \ + Z_TYPE_P(zv) = Z_TYPE_P(ov); \ + zv->value = ov->value; \ + zval_copy_ctor(zv); \ + } else { \ + ZVAL_ADDREF(zv); \ + } +#endif + #ifndef ZVAL_ZVAL #define ZVAL_ZVAL(z, zv, copy, dtor) { \ int is_ref, refcount; \