- array_init(return_value);
- zend_hash_copy(Z_ARRVAL_P(return_value), &msg->hdrs, (copy_ctor_func_t) zval_add_ref, NULL, sizeof(zval *));
+ /* This is needed for situations like
+ * $this->headers['foo'] = 'bar';
+ */
+ if (type == BP_VAR_W) {
+ return_value->refcount = 1;
+ return_value->is_ref = 1;
+ Z_TYPE_P(return_value) = IS_ARRAY;
+ Z_ARRVAL_P(return_value) = &msg->hdrs;
+ } else {
+ array_init(return_value);
+ zend_hash_copy(Z_ARRVAL_P(return_value), &msg->hdrs, (copy_ctor_func_t) zval_add_ref, NULL, sizeof(zval *));
+ }