X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=php_http_std_defs.h;h=1b08ffdd4c7dbf2e90297cb4d5c5da5dd0566b72;hp=0c5a9e5b3aa875f8587fc8c9977850cef5f1c638;hb=930e15c0f50743465332dcf3e1036ff11ef2150e;hpb=7e20868975f5c23ccd74af0d8f7147c506d2b8cf diff --git a/php_http_std_defs.h b/php_http_std_defs.h index 0c5a9e5..1b08ffd 100644 --- a/php_http_std_defs.h +++ b/php_http_std_defs.h @@ -58,13 +58,6 @@ typedef int STATUS; Z_ARRVAL(zv) = (ht); \ } -#ifndef MAKE_COPY_ZVAL -# define MAKE_COPY_ZVAL(ppzv, pzv) \ - *(pzv) = **(ppzv); \ - zval_copy_ctor((pzv)); \ - INIT_PZVAL((pzv)); -#endif - /* return bool (v == SUCCESS) */ #define RETVAL_SUCCESS(v) RETVAL_BOOL(SUCCESS == (v)) #define RETURN_SUCCESS(v) RETURN_BOOL(SUCCESS == (v)) @@ -189,9 +182,25 @@ typedef int STATUS; # define getObject(t, o) getObjectEx(t, o, getThis()) # define getObjectEx(t, o, v) t * o = ((t *) zend_object_store_get_object(v TSRMLS_CC)) # define putObject(t, o) zend_objects_store_put(o, (zend_objects_store_dtor_t) zend_objects_destroy_object, (zend_objects_free_object_storage_t) _ ##t## _free, NULL TSRMLS_CC); -# define freeObject(o) \ - zend_object_std_dtor(&o->zo TSRMLS_CC); \ +# ifndef WONKY +# define freeObject(o) \ + if (OBJ_GUARDS(o)) { \ + zend_hash_destroy(OBJ_GUARDS(o)); \ + FREE_HASHTABLE(OBJ_GUARDS(o)); \ + } \ + if (OBJ_PROP(o)) { \ + zend_hash_destroy(OBJ_PROP(o)); \ + FREE_HASHTABLE(OBJ_PROP(o)); \ + } \ + efree(o); +# else +# define freeObject(o) \ + if (OBJ_PROP(o)) { \ + zend_hash_destroy(OBJ_PROP(o)); \ + FREE_HASHTABLE(OBJ_PROP(o)); \ + } \ efree(o); +# endif # define OBJ_PROP(o) (o)->zo.properties # define OBJ_GUARDS(o) (o)->zo.guards @@ -320,6 +329,13 @@ typedef int STATUS; ZEND_ARG_PASS_INFO(0) \ ZEND_ARG_PASS_INFO(1) \ ZEND_END_ARG_INFO(); \ +\ + HTTP_STATIC_ARG_INFO \ + ZEND_BEGIN_ARG_INFO(http_arg_pass_ref_3, 0) \ + ZEND_ARG_PASS_INFO(0) \ + ZEND_ARG_PASS_INFO(0) \ + ZEND_ARG_PASS_INFO(1) \ + ZEND_END_ARG_INFO(); \ \ HTTP_STATIC_ARG_INFO \ ZEND_BEGIN_ARG_INFO(http_arg_pass_ref_4, 0) \ @@ -331,6 +347,7 @@ typedef int STATUS; # else # define HTTP_DECLARE_ARG_PASS_INFO() \ static unsigned char http_arg_pass_ref_2[] = {2, BYREF_NONE, BYREF_FORCE}; \ + 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}; # endif /* ZEND_ENGINE_2 */ #endif /* HTTP_HAVE_CURL */