&& SUCCESS == zend_hash_index_find(Z_ARRVAL_PP(type), key->h, (void *) &ztype)
&& SUCCESS == zend_hash_index_find(Z_ARRVAL_PP(error), key->h, (void *) &zerror)
) {
- zval *entry;
+ zval *entry, **array;
MAKE_STD_ZVAL(entry);
array_init(entry);
Z_ADDREF_PP(zerror);
add_assoc_zval_ex(entry, ZEND_STRS("error"), *zerror);
- zend_hash_quick_update(Z_ARRVAL_P(zfiles), file_key->arKey, file_key->nKeyLength, file_key->h, (void *) &entry, sizeof(zval *), NULL);
+ if (SUCCESS == zend_hash_quick_find(Z_ARRVAL_P(zfiles), file_key->arKey, file_key->nKeyLength, file_key->h, (void *) &array)) {
+ add_next_index_zval(*array, entry);
+ } else {
+ zval *tmp;
+
+ MAKE_STD_ZVAL(tmp);
+ array_init(tmp);
+ add_next_index_zval(tmp, entry);
+ zend_hash_quick_update(Z_ARRVAL_P(zfiles), file_key->arKey, file_key->nKeyLength, file_key->h, (void *) &tmp, sizeof(zval *), NULL);
+ }
}
return ZEND_HASH_APPLY_KEEP;
return ZEND_HASH_APPLY_KEEP;
}
+#define PHP_HTTP_ENV_REQUEST_OBJECT_INIT(obj) \
+ do { \
+ if (!obj->message) { \
+ obj->message = php_http_message_init_env(NULL, PHP_HTTP_REQUEST TSRMLS_CC); \
+ } \
+ } while(0)
+
PHP_METHOD(HttpEnvRequest, __construct)
{
with_error_handling(EH_THROW, php_http_exception_get_class_entry()) {
+ php_http_message_object_t *obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+
if (SUCCESS == zend_parse_parameters_none()) {
- php_http_message_object_t *obj = zend_object_store_get_object(getThis() TSRMLS_CC);
zval *zsg, *zqs;
obj->message = php_http_message_init_env(obj->message, PHP_HTTP_REQUEST TSRMLS_CC);
zend_update_property(php_http_env_request_class_entry, getThis(), ZEND_STRL("files"), zqs TSRMLS_CC);
zval_ptr_dtor(&zqs);
}
+ PHP_HTTP_ENV_REQUEST_OBJECT_INIT(obj);
} end_error_handling();
}