- fix memory corruption
[m6w6/ext-http] / php_http_std_defs.h
index 74db7d43070acab2bb822e69117519ffebee3651..c212d30d1b85f8efc1136e2e93994d5181d9092d 100644 (file)
@@ -256,9 +256,7 @@ typedef int STATUS;
        { \
                zval *__tmp = GET_PROP(o, p); \
                if (__tmp) { \
-                       zval_dtor(__tmp); \
-                       FREE_ZVAL(__tmp); \
-                       __tmp = NULL; \
+                       zval_ptr_dtor(&__tmp); \
                } \
        }
 
@@ -305,7 +303,7 @@ typedef int STATUS;
 #      define HTTP_EMPTY_ARGS_EX(class, method, ret_ref)                       HTTP_BEGIN_ARGS_EX(class, method, ret_ref, 0) HTTP_END_ARGS
 #      define HTTP_ARGS(class, method)                                                         args_for_ ##class## _ ##method
 #      define HTTP_ARG_VAL(name, pass_ref)                                                     ZEND_ARG_INFO(pass_ref, name)
-#      define HTTP_ARG_OBJ(class, name, allow_null)                            ZEND_ARG_OBJ_INFO(1, name, class, allow_null)
+#      define HTTP_ARG_OBJ(class, name, allow_null)                            ZEND_ARG_OBJ_INFO(0, name, class, allow_null)
 #endif
 
 #ifdef ZEND_ENGINE_2
@@ -339,18 +337,13 @@ typedef int STATUS;
                                ZEND_ARG_PASS_INFO(0) \
                                ZEND_ARG_PASS_INFO(0) \
                                ZEND_ARG_PASS_INFO(1) \
-                       ZEND_END_ARG_INFO(); \
- \
-                       static \
-                       ZEND_BEGIN_ARG_INFO(http_arg_pass_ref_all, 1) \
-                               ZEND_ARG_PASS_INFO(1) \
-                       ZEND_END_ARG_INFO()
+                       ZEND_END_ARG_INFO();
+
 #      else
 #              define HTTP_DECLARE_ARG_PASS_INFO() \
                        static unsigned char http_arg_pass_ref_3[] = {3, BYREF_NONE, BYREF_NONE, BYREF_FORCE}; \
                        static unsigned char http_arg_pass_ref_4[] = {4, BYREF_NONE, BYREF_NONE, BYREF_NONE, BYREF_FORCE}; \
-                       static unsigned char http_arg_pass_ref_5[] = {5, BYREF_NONE, BYREF_NONE, BYREF_NONE, BYREF_NONE, BYREF_FORCE}; \
-                       static unsigned char http_arg_pass_ref_all[]={1, BYREF_FORCE_REST}
+                       static unsigned char http_arg_pass_ref_5[] = {5, BYREF_NONE, BYREF_NONE, BYREF_NONE, BYREF_NONE, BYREF_FORCE};
 #      endif /* ZEND_ENGINE_2 */
 #else
 #      define HTTP_DECLARE_ARG_PASS_INFO()