static inline void shift_rfc5987(php_http_buffer_t *buf, zval *zvalue, const char *vss, size_t vsl, unsigned flags TSRMLS_DC)
{
	HashTable *ht = HASH_OF(zvalue);
	zval **zdata, *tmp;
	php_http_array_hashkey_t key = php_http_array_hashkey_init(0);

	if (SUCCESS == zend_hash_get_current_data(ht, (void *) &zdata)
	&&	HASH_KEY_NON_EXISTENT != (key.type = zend_hash_get_current_key_ex(ht, &key.str, &key.len, &key.num, key.dup, NULL))
	) {
		php_http_array_hashkey_stringify(&key);
		php_http_buffer_appendf(buf, "*%.*sutf-8'%.*s'",
				(int) (vsl > INT_MAX ? INT_MAX : vsl), vss,
				(int) (key.len > INT_MAX ? INT_MAX : key.len), key.str);
		php_http_array_hashkey_stringfree(&key);

		tmp = php_http_zsep(1, IS_STRING, *zdata);
		prepare_value(flags | PHP_HTTP_PARAMS_URLENCODED, tmp TSRMLS_CC);
		php_http_buffer_append(buf, Z_STRVAL_P(tmp), Z_STRLEN_P(tmp));
		zval_ptr_dtor(&tmp);
	}
}

The product does not correctly convert an object, resource, or structure from one type to a different type.