RETVAL_OBJECT(o); \
return
#define RETVAL_OBJVAL(ov) \
- ZVAL_OBJVAL(return_value, 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); \
return
#define ZVAL_OBJVAL(zv, ov) \
(zv)->type = IS_OBJECT; \
- (zv)->value.obj = (ov); \
- if (Z_OBJ_HT_P(zv)->add_ref) { \
- Z_OBJ_HT_P(zv)->add_ref((zv) TSRMLS_CC); \
- }
-
+ (zv)->value.obj = (ov);
+
/* function accepts no args */
#define NO_ARGS \
if (ZEND_NUM_ARGS()) { \
for ( zend_hash_internal_pointer_reset(hash); \
zend_hash_get_current_key(hash, &strkey, &numkey, 0) != HASH_KEY_NON_EXISTANT && \
zend_hash_get_current_data(hash, (void **) &val) == SUCCESS; \
- zend_hash_move_forward(hash)) \
+ zend_hash_move_forward(hash))
+
+#define FOREACH_KEYLENVAL(array, strkey, keylen, numkey, val) FOREACH_HASH_KEYVAL(Z_ARRVAL_P(array), strkey, keylen, numkey, val)
+#define FOREACH_HASH_KEYLENVAL(hash, strkey, keylen, numkey, val) \
+ for ( zend_hash_internal_pointer_reset(hash); \
+ zend_hash_get_current_key_ex(hash, &strkey, &keylen, &numkey, 0, NULL) != HASH_KEY_NON_EXISTANT && \
+ zend_hash_get_current_data(hash, (void **) &val) == SUCCESS; \
+ zend_hash_move_forward(hash))
#define array_copy(src, dst) zend_hash_copy(Z_ARRVAL_P(dst), Z_ARRVAL_P(src), (copy_ctor_func_t) zval_add_ref, NULL, sizeof(zval *))
#define array_merge(src, dst) zend_hash_merge(Z_ARRVAL_P(dst), Z_ARRVAL_P(src), (copy_ctor_func_t) zval_add_ref, NULL, sizeof(zval *), 1)
# define HTTP_REGISTER_CLASS_EX(classname, name, parent, flags) \
{ \
zend_class_entry ce; \
+ memset(&ce, 0, sizeof(zend_class_entry)); \
INIT_CLASS_ENTRY(ce, #classname, name## _fe); \
ce.create_object = _ ##name## _new; \
name## _ce = zend_register_internal_class_ex(&ce, parent, NULL TSRMLS_CC); \
# define HTTP_REGISTER_CLASS(classname, name, parent, flags) \
{ \
zend_class_entry ce; \
+ memset(&ce, 0, sizeof(zend_class_entry)); \
INIT_CLASS_ENTRY(ce, #classname, name## _fe); \
ce.create_object = NULL; \
name## _ce = zend_register_internal_class_ex(&ce, parent, NULL TSRMLS_CC); \
# define HTTP_REGISTER_EXCEPTION(classname, cename, parent) \
{ \
zend_class_entry ce; \
+ memset(&ce, 0, sizeof(zend_class_entry)); \
INIT_CLASS_ENTRY(ce, #classname, NULL); \
ce.create_object = NULL; \
cename = zend_register_internal_class_ex(&ce, parent, NULL TSRMLS_CC); \