X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=php_http_std_defs.h;h=78a9ae2e2ef2dc900be36d9ca7a9dead5b8a74af;hp=aa4f81ef946082c752e41bb6d37e11951958e719;hb=389e280e0bba312ff5ca9981801cc842dad26ec2;hpb=ea64ec632948b04868d66009dc431a1625c4755b diff --git a/php_http_std_defs.h b/php_http_std_defs.h index aa4f81e..78a9ae2 100644 --- a/php_http_std_defs.h +++ b/php_http_std_defs.h @@ -60,22 +60,22 @@ typedef int STATUS; #define RETVAL_SUCCESS(v) RETVAL_BOOL(SUCCESS == (v)) #define RETURN_SUCCESS(v) RETURN_BOOL(SUCCESS == (v)) /* return object(values) */ -#define RETVAL_OBJECT(o) \ - RETVAL_OBJVAL((o)->value.obj) -#define RETURN_OBJECT(o) \ - RETVAL_OBJECT(o); \ +#define RETVAL_OBJECT(o, addref) \ + RETVAL_OBJVAL((o)->value.obj, addref) +#define RETURN_OBJECT(o, addref) \ + RETVAL_OBJECT(o, addref); \ return -#define RETVAL_OBJVAL(ov) \ - ZVAL_OBJVAL(return_value, ov) \ - if (Z_OBJ_HT_P(return_value)->add_ref) { \ - Z_OBJ_HT_P(return_value)->add_ref(return_value TSRMLS_CC); \ - } -#define RETURN_OBJVAL(ov) \ - RETVAL_OBJVAL(ov); \ +#define RETVAL_OBJVAL(ov, addref) \ + ZVAL_OBJVAL(return_value, ov, addref) +#define RETURN_OBJVAL(ov, addref) \ + RETVAL_OBJVAL(ov, addref); \ return -#define ZVAL_OBJVAL(zv, ov) \ +#define ZVAL_OBJVAL(zv, ov, addref) \ (zv)->type = IS_OBJECT; \ - (zv)->value.obj = (ov); + (zv)->value.obj = (ov);\ + if (addref && Z_OBJ_HT_P(zv)->add_ref) { \ + Z_OBJ_HT_P(zv)->add_ref((zv) TSRMLS_CC); \ + } /* return property */ #define RETVAL_PROP(n) RETVAL_PROP_EX(getThis(), n) #define RETURN_PROP(n) RETURN_PROP_EX(getThis(), n)