- if (Z_TYPE_PP(zoption) != type) {
- switch (type)
- {
- case IS_BOOL: convert_to_boolean_ex(zoption); break;
- case IS_LONG: convert_to_long_ex(zoption); break;
- case IS_DOUBLE: convert_to_double_ex(zoption); break;
- case IS_STRING: convert_to_string_ex(zoption); break;
- case IS_ARRAY: convert_to_array_ex(zoption); break;
- case IS_OBJECT: convert_to_object_ex(zoption); break;
- default:
- break;
+/* {{{ static inline zval *http_request_option_cache(http_request *, char *key, zval *) */
+static inline zval *_http_request_option_cache_ex(http_request *r, char *key, size_t keylen, ulong h, zval *opt TSRMLS_DC)
+{
+ ZVAL_ADDREF(opt);
+
+#ifdef ZEND_ENGINE_2
+ if (h) {
+ _zend_hash_quick_add_or_update(&r->_cache.options, key, keylen, h, &opt, sizeof(zval *), NULL,
+ zend_hash_quick_exists(&r->_cache.options, key, keylen, h)?HASH_UPDATE:HASH_ADD ZEND_FILE_LINE_CC);
+ }
+ else
+#endif
+ {
+ if (zend_hash_exists(&r->_cache.options, key, keylen)) {
+ zend_hash_update(&r->_cache.options, key, keylen, &opt, sizeof(zval *), NULL);
+ } else {
+ zend_hash_add(&r->_cache.options, key, keylen, &opt, sizeof(zval *), NULL);