X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=php_http_std_defs.h;h=f9485e57013a935c7f7345a53894d9a26277a773;hb=f0d2eafadc9967abd53546c6b7f395ce095255e9;hp=6bde00ce11952f647dd2fe2bae6440c45a39b422;hpb=e83a7438dc70ed96630887246a1d3aefcf155b1c;p=m6w6%2Fext-http diff --git a/php_http_std_defs.h b/php_http_std_defs.h index 6bde00c..f9485e5 100644 --- a/php_http_std_defs.h +++ b/php_http_std_defs.h @@ -192,7 +192,7 @@ typedef int STATUS; { \ zend_class_entry ce; \ INIT_CLASS_ENTRY(ce, #classname, name## _fe); \ - ce.create_object = name## _new; \ + ce.create_object = _ ##name## _new; \ name## _ce = zend_register_internal_class_ex(&ce, parent, NULL TSRMLS_CC); \ name## _ce->ce_flags |= flags; \ memcpy(& name## _handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); \ @@ -219,7 +219,7 @@ 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 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 OBJ_PROP(o) (o)->zo.properties # define DCL_STATIC_PROP(a, t, n, v) zend_declare_property_ ##t(ce, (#n), sizeof(#n)-1, (v), (ZEND_ACC_ ##a | ZEND_ACC_STATIC) TSRMLS_CC) @@ -264,6 +264,18 @@ typedef int STATUS; } \ } +/* + * the property *MUST* be updated after SEP_PROP() + */ +# define SEP_PROP(zpp) \ + { \ + zval **op = zpp; \ + SEPARATE_ZVAL_IF_NOT_REF(zpp); \ + if (op != zpp) { \ + zval_ptr_dtor(op); \ + } \ + } + # define SET_EH_THROW() SET_EH_THROW_EX(zend_exception_get_default()) # define SET_EH_THROW_HTTP() SET_EH_THROW_EX(http_exception_get_default()) # define SET_EH_THROW_EX(ex) php_set_error_handling(EH_THROW, ex TSRMLS_CC)