Module: wine Branch: master Commit: 1a53e28cc8af7084b80b4a906ce854e3e646aa53 URL: https://gitlab.winehq.org/wine/wine/-/commit/1a53e28cc8af7084b80b4a906ce854e...
Author: Piotr Caban piotr@codeweavers.com Date: Tue Feb 6 13:42:31 2024 +0100
wininet: Don't allocate global_proxy structure dynamically.
---
dlls/wininet/internet.c | 39 ++++++++++++++++----------------------- 1 file changed, 16 insertions(+), 23 deletions(-)
diff --git a/dlls/wininet/internet.c b/dlls/wininet/internet.c index 238b540994e..a8ae37a52cd 100644 --- a/dlls/wininet/internet.c +++ b/dlls/wininet/internet.c @@ -472,16 +472,13 @@ static void FreeProxyInfo( proxyinfo_t *lpwpi ) free(lpwpi->proxyPassword); }
-static proxyinfo_t *global_proxy; +static proxyinfo_t global_proxy;
static void free_global_proxy( void ) { EnterCriticalSection( &WININET_cs ); - if (global_proxy) - { - FreeProxyInfo( global_proxy ); - free( global_proxy ); - } + FreeProxyInfo( &global_proxy ); + memset( &global_proxy, 0, sizeof(global_proxy) ); LeaveCriticalSection( &WININET_cs ); }
@@ -542,11 +539,11 @@ static LONG INTERNET_LoadProxySettings( proxyinfo_t *lpwpi ) memset( lpwpi, 0, sizeof(*lpwpi) );
EnterCriticalSection( &WININET_cs ); - if (global_proxy) + if (global_proxy.flags) { - lpwpi->flags = global_proxy->flags; - lpwpi->proxy = wcsdup( global_proxy->proxy ); - lpwpi->proxyBypass = wcsdup( global_proxy->proxyBypass ); + lpwpi->flags = global_proxy.flags; + lpwpi->proxy = wcsdup( global_proxy.proxy ); + lpwpi->proxyBypass = wcsdup( global_proxy.proxyBypass ); } LeaveCriticalSection( &WININET_cs );
@@ -3024,20 +3021,16 @@ BOOL WINAPI InternetSetOptionW(HINTERNET hInternet, DWORD dwOption, { EnterCriticalSection( &WININET_cs ); free_global_proxy(); - global_proxy = malloc(sizeof(proxyinfo_t)); - if (global_proxy) + if (info->dwAccessType == INTERNET_OPEN_TYPE_PROXY) { - if (info->dwAccessType == INTERNET_OPEN_TYPE_PROXY) - { - global_proxy->flags = PROXY_TYPE_PROXY; - global_proxy->proxy = wcsdup(info->lpszProxy); - global_proxy->proxyBypass = wcsdup(info->lpszProxyBypass); - } - else - { - global_proxy->flags = PROXY_TYPE_DIRECT; - global_proxy->proxy = global_proxy->proxyBypass = NULL; - } + global_proxy.flags = PROXY_TYPE_PROXY; + global_proxy.proxy = wcsdup(info->lpszProxy); + global_proxy.proxyBypass = wcsdup(info->lpszProxyBypass); + } + else + { + global_proxy.flags = PROXY_TYPE_DIRECT; + global_proxy.proxy = global_proxy.proxyBypass = NULL; } LeaveCriticalSection( &WININET_cs ); }