Jacek Caban : wininet: Free all cookie data in free_cookie.
Alexandre Julliard
julliard at winehq.org
Wed Jul 6 09:57:32 CDT 2016
Module: wine
Branch: master
Commit: 8332d8066574e98690101b4523e3afc00ae9f352
URL: http://source.winehq.org/git/wine.git/?a=commit;h=8332d8066574e98690101b4523e3afc00ae9f352
Author: Jacek Caban <jacek at codeweavers.com>
Date: Wed Jul 6 13:43:35 2016 +0200
wininet: Free all cookie data in free_cookie.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/wininet/cookie.c | 33 ++++++++++++++++++++++++++++++++-
1 file changed, 32 insertions(+), 1 deletion(-)
diff --git a/dlls/wininet/cookie.c b/dlls/wininet/cookie.c
index 38f69e0..3240633 100644
--- a/dlls/wininet/cookie.c
+++ b/dlls/wininet/cookie.c
@@ -684,6 +684,33 @@ DWORD get_cookie_header(const WCHAR *host, const WCHAR *path, WCHAR **ret)
return res;
}
+static void free_cookie_domain_list(struct list *list)
+{
+ cookie_container_t *container;
+ cookie_domain_t *domain;
+
+ while(!list_empty(list)) {
+ domain = LIST_ENTRY(list_next(list, list), cookie_domain_t, entry);
+
+ free_cookie_domain_list(&domain->subdomain_list);
+
+ while(!list_empty(&domain->path_list)) {
+ container = LIST_ENTRY(list_next(&domain->path_list, &domain->path_list), cookie_container_t, entry);
+
+ while(!list_empty(&container->cookie_list))
+ delete_cookie(LIST_ENTRY(list_next(&container->cookie_list, &container->cookie_list), cookie_t, entry));
+
+ heap_free(container->cookie_url);
+ list_remove(&container->entry);
+ heap_free(container);
+ }
+
+ heap_free(domain->domain);
+ list_remove(&domain->entry);
+ heap_free(domain);
+ }
+}
+
/***********************************************************************
* InternetGetCookieExW (WININET.@)
*
@@ -1239,5 +1266,9 @@ BOOL WINAPI InternetSetPerSiteCookieDecisionW( LPCWSTR pchHostName, DWORD dwDeci
void free_cookie(void)
{
- DeleteCriticalSection(&cookie_cs);
+ EnterCriticalSection(&cookie_cs);
+
+ free_cookie_domain_list(&domain_list);
+
+ LeaveCriticalSection(&cookie_cs);
}
More information about the wine-cvs
mailing list