- ensure proper message deallocation
[m6w6/ext-http] / php_http_std_defs.h
index bf0871e989d8dce8709115f4d40a77dbb9b04690..40dc8c769e1b0ec00ca1b6e7364652697513de85 100644 (file)
@@ -66,18 +66,17 @@ typedef int STATUS;
        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) \
-       INIT_PZVAL(zv); \
        (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()) { \
@@ -147,7 +146,14 @@ typedef int STATUS;
        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)