};
static zend_object_handlers http_message_object_handlers;
-void _http_message_object_init(INIT_FUNC_ARGS)
+PHP_MINIT_FUNCTION(http_message_object)
{
HTTP_REGISTER_CLASS_EX(HttpMessage, http_message_object, NULL, 0);
http_message_object_handlers.write_property = http_message_object_write_prop;
http_message_object_handlers.get_properties = http_message_object_get_props;
http_message_object_handlers.get_property_ptr_ptr = NULL;
+
+ return SUCCESS;
}
zend_object_value _http_message_object_new(zend_class_entry *ce TSRMLS_DC)
break;
case HTTP_MSG_PROPHASH_PARENT_MESSAGE:
- if (msg->parent) {
- zval tmp;
- tmp.value.obj = obj->parent;
- zend_objects_store_del_ref(&tmp TSRMLS_CC);
+ if (Z_TYPE_P(value) == IS_OBJECT && instanceof_function(Z_OBJCE_P(value), http_message_object_ce TSRMLS_CC)) {
+ if (msg->parent) {
+ zval tmp;
+ tmp.value.obj = obj->parent;
+ Z_OBJ_DELREF(tmp);
+ }
+ Z_OBJ_ADDREF_P(value);
+ obj->parent = value->value.obj;
}
- zend_objects_store_add_ref(value TSRMLS_CC);
- obj->parent = value->value.obj;
break;
case HTTP_MSG_PROPHASH_REQUEST_METHOD: