- initialize class entries, or else the ZE will try to access ce->handlers that point...
[m6w6/ext-http] / php_http_std_defs.h
index 896048537a49bac390ed8b126bab22297a503700..e8f8b4dca30c335ab3d59e0f52e10d7b8040593a 100644 (file)
@@ -66,17 +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) \
        (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()) { \
@@ -197,6 +197,7 @@ typedef int STATUS;
 #      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); \