X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=php_http_std_defs.h;h=ce42260c357a0eae495dea035be0739fb08e113f;hp=a2b753faf789eded880711c838dce4ddee1cb84b;hb=5dca59e3a269c903b395d97abe831c0fc138b5b6;hpb=496deabe5e41f1706a472f5c1e9af7cc741b1243 diff --git a/php_http_std_defs.h b/php_http_std_defs.h index a2b753f..ce42260 100644 --- a/php_http_std_defs.h +++ b/php_http_std_defs.h @@ -52,6 +52,13 @@ typedef int STATUS; } #endif +#define INIT_ZARR(zv, ht) \ + { \ + INIT_PZVAL(&(zv)); \ + Z_TYPE(zv) = IS_ARRAY; \ + Z_ARRVAL(zv) = (ht); \ + } + /* return bool (v == SUCCESS) */ #define RETVAL_SUCCESS(v) RETVAL_BOOL(SUCCESS == (v)) #define RETURN_SUCCESS(v) RETURN_BOOL(SUCCESS == (v)) @@ -256,9 +263,7 @@ typedef int STATUS; { \ zval *__tmp = GET_PROP(o, p); \ if (__tmp) { \ - zval_dtor(__tmp); \ - FREE_ZVAL(__tmp); \ - __tmp = NULL; \ + zval_ptr_dtor(&__tmp); \ } \ } @@ -339,18 +344,13 @@ typedef int STATUS; ZEND_ARG_PASS_INFO(0) \ ZEND_ARG_PASS_INFO(0) \ ZEND_ARG_PASS_INFO(1) \ - ZEND_END_ARG_INFO(); \ - \ - static \ - ZEND_BEGIN_ARG_INFO(http_arg_pass_ref_all, 1) \ - ZEND_ARG_PASS_INFO(1) \ - ZEND_END_ARG_INFO() + ZEND_END_ARG_INFO(); + # else # define HTTP_DECLARE_ARG_PASS_INFO() \ static unsigned char http_arg_pass_ref_3[] = {3, BYREF_NONE, BYREF_NONE, BYREF_FORCE}; \ static unsigned char http_arg_pass_ref_4[] = {4, BYREF_NONE, BYREF_NONE, BYREF_NONE, BYREF_FORCE}; \ - static unsigned char http_arg_pass_ref_5[] = {5, BYREF_NONE, BYREF_NONE, BYREF_NONE, BYREF_NONE, BYREF_FORCE}; \ - static unsigned char http_arg_pass_ref_all[]={1, BYREF_FORCE_REST} + static unsigned char http_arg_pass_ref_5[] = {5, BYREF_NONE, BYREF_NONE, BYREF_NONE, BYREF_NONE, BYREF_FORCE}; # endif /* ZEND_ENGINE_2 */ #else # define HTTP_DECLARE_ARG_PASS_INFO() @@ -373,6 +373,31 @@ typedef int STATUS; # endif #endif +#ifndef ZVAL_ZVAL +#define ZVAL_ZVAL(z, zv, copy, dtor) { \ + int is_ref, refcount; \ + is_ref = (z)->is_ref; \ + refcount = (z)->refcount; \ + *(z) = *(zv); \ + if (copy) { \ + zval_copy_ctor(z); \ + } \ + if (dtor) { \ + if (!copy) { \ + ZVAL_NULL(zv); \ + } \ + zval_ptr_dtor(&zv); \ + } \ + (z)->is_ref = is_ref; \ + (z)->refcount = refcount; \ + } +#endif +#ifndef RETVAL_ZVAL +#define RETVAL_ZVAL(zv, copy, dtor) ZVAL_ZVAL(return_value, zv, copy, dtor) +#endif +#ifndef RETURN_ZVAL +#define RETURN_ZVAL(zv, copy, dtor) { RETVAL_ZVAL(zv, copy, dtor); return; } +#endif #endif /* PHP_HTTP_STD_DEFS_H */