X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;ds=sidebyside;f=php_http_std_defs.h;h=456ae74ca4a8f2a04d0af87bc53d926adfca7050;hb=ac73b47af7c48397dc9a6e07872062b3c3619813;hp=1f8e45d30cb338234609d5c5534c9f4296b4cea8;hpb=ad5f896b03adaa073134a00108a9cdf00720673a;p=m6w6%2Fext-http diff --git a/php_http_std_defs.h b/php_http_std_defs.h index 1f8e45d..456ae74 100644 --- a/php_http_std_defs.h +++ b/php_http_std_defs.h @@ -182,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