- separation of the postFields array
[m6w6/ext-http] / php_http_std_defs.h
index 0cc40c9fb73c6acbc8eb250c6f18cbd1e6fa94e4..61a55639238c32c975b32b03e6f4e219974bf85c 100644 (file)
@@ -181,11 +181,12 @@ typedef int STATUS;
                                        if (Z_TYPE_PP(tmp) != IS_ARRAY) { \
                                                convert_to_array_ex(tmp); \
                                        } \
+                                       ZVAL_ADDREF(*data); \
                                        add_next_index_zval(*tmp, *data); \
                                } else { \
+                                       ZVAL_ADDREF(*data); \
                                        add_assoc_zval(dst, key, *data); \
                                } \
-                               ZVAL_ADDREF(*data); \
                                key = NULL; \
                        } \
                } \
@@ -261,34 +262,6 @@ typedef int STATUS;
 #      define ACC_PROP_PUBLIC(flags)                   (flags & ZEND_ACC_PUBLIC)
 #      define ACC_PROP(ce, flags)                              (ACC_PROP_PUBLIC(flags) || ACC_PROP_PRIVATE(ce, flags) || ACC_PROP_PROTECTED(ce, flags))
 
-#      define INIT_PARR(o, n) \
-       { \
-               zval *__tmp; \
-               MAKE_STD_ZVAL(__tmp); \
-               array_init(__tmp); \
-               SET_PROP(o, n, __tmp); \
-       }
-
-#      define FREE_PARR(o, p) \
-       { \
-               zval *__tmp = GET_PROP(o, p); \
-               if (__tmp) { \
-                       zval_ptr_dtor(&__tmp); \
-               } \
-       }
-
-/*
- * 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)
@@ -388,10 +361,18 @@ typedef int STATUS;
                        ZEND_BEGIN_ARG_INFO(http_arg_pass_ref_2, 0) \
                                ZEND_ARG_PASS_INFO(0) \
                                ZEND_ARG_PASS_INFO(1) \
+                       ZEND_END_ARG_INFO(); \
+\
+                       static \
+                       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();
 #      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_2[] = {2, BYREF_NONE, BYREF_FORCE};\
+                       static unsigned char http_arg_pass_ref_3[] = {3, BYREF_NONE, BYREF_NONE, BYREF_FORCE}; 
 #      endif /* ZEND_ENGINE_2 */
 #endif /* HTTP_HAVE_CURL */