change array_list API
[m6w6/ext-http] / php_http_cookie.c
index 5b78abbe0dd161d9595839f14d88bbff065b47f8..5b8878306f76fd51c3a9fde1f9f6fea953ca54a7 100644 (file)
@@ -136,13 +136,11 @@ static void add_entry(php_http_cookie_list_t *list, char **allowed_extras, long
        } else if _KEY_IS("httpOnly") {
                list->flags |= PHP_HTTP_COOKIE_HTTPONLY;
        } else {
-               char buf[0x20];
-
-               php_http_array_hashkey_stringify(key);
                /* check for extra */
                if (allowed_extras) {
                        char **ae = allowed_extras;
 
+                       php_http_array_hashkey_stringify(key);
                        for (; *ae; ++ae) {
                                if (!strncasecmp(key->str, *ae, key->len)) {
                                        if (key->type == HASH_KEY_IS_LONG) {
@@ -150,11 +148,12 @@ static void add_entry(php_http_cookie_list_t *list, char **allowed_extras, long
                                        } else {
                                                zend_hash_update(&list->extras, key->str, key->len, (void *) &arg, sizeof(zval *), NULL);
                                        }
+                                       php_http_array_hashkey_stringfree(key);
                                        return;
                                }
                        }
+                       php_http_array_hashkey_stringfree(key);
                }
-               php_http_array_hashkey_stringfree(key);
 
                /* cookie */
                if (key->type == HASH_KEY_IS_LONG) {
@@ -463,11 +462,7 @@ zend_object_value php_http_cookie_object_new_ex(zend_class_entry *ce, php_http_c
 
        o = ecalloc(sizeof(*o), 1);
        zend_object_std_init((zend_object *) o, ce TSRMLS_CC);
-#if PHP_VERSION_ID < 50339
-       zend_hash_copy(((zend_object *) o)->properties, &(ce->default_properties), (copy_ctor_func_t) zval_add_ref, NULL, sizeof(zval*));
-#else
        object_properties_init((zend_object *) o, ce);
-#endif
 
        if (list) {
                o->list = list;
@@ -556,6 +551,15 @@ PHP_METHOD(HttpCookie, __construct)
                                                        break;
                                                }
                                        }
+
+                                       if (ae) {
+                                               char **ae_ptr;
+
+                                               for (ae_ptr = ae; *ae_ptr; ++ae_ptr) {
+                                                       efree(*ae_ptr);
+                                               }
+                                               efree(ae);
+                                       }
                                } end_error_handling();
                        }
                }