- object_init(return_value);
- if (SUCCESS != http_parse_cookie(cookie, HASH_OF(return_value))) {
- zval_dtor(return_value);
- RETURN_FALSE;
+ if (allowed_extras_array) {
+ allowed_extras = ecalloc(zend_hash_num_elements(Z_ARRVAL_P(allowed_extras_array)) + 1, sizeof(char *));
+ FOREACH_VAL(pos, allowed_extras_array, entry) {
+ ZVAL_ADDREF(*entry);
+ convert_to_string_ex(entry);
+ allowed_extras[i] = estrndup(Z_STRVAL_PP(entry), Z_STRLEN_PP(entry));
+ zval_ptr_dtor(entry);
+ }
+ }
+
+ if (http_parse_cookie_ex(&list, cookie, flags, allowed_extras)) {
+ object_init(return_value);
+ http_cookie_list_tostruct(&list, return_value);
+ http_cookie_list_dtor(&list);
+ } else {
+ RETVAL_FALSE;
+ }
+
+ if (allowed_extras) {
+ for (i = 0; allowed_extras[i]; ++i) {
+ efree(allowed_extras[i]);
+ }
+ efree(allowed_extras);