please ignore also that one. APPINFO_QueryOption needs to be fixed first
Am 20.08.2011 17:19, schrieb André Hentschel:
fixed the leak
dlls/mshtml/nsembed.c | 62 +++++++++++++++++++++++------------------------- 1 files changed, 30 insertions(+), 32 deletions(-)
diff --git a/dlls/mshtml/nsembed.c b/dlls/mshtml/nsembed.c index 2bebf8b..c2581e6 100644 --- a/dlls/mshtml/nsembed.c +++ b/dlls/mshtml/nsembed.c @@ -27,6 +27,7 @@ #include "winbase.h" #include "winuser.h" #include "winreg.h" +#include "wininet.h" #include "ole2.h" #include "shlobj.h"
@@ -488,51 +489,48 @@ static void set_lang(nsIPrefBranch *pref)
static void set_proxy(nsIPrefBranch *pref) {
- char proxy[512];
- char * proxy_port;
- int proxy_port_num;
- DWORD enabled = 0, res, size, type;
- HKEY hkey;
- CHAR hostname[INTERNET_MAX_HOST_NAME_LENGTH];
- URL_COMPONENTSA UrlComponents;
- INTERNET_PROXY_INFOA *pi;
- DWORD size;
- static const WCHAR proxy_keyW[] =
{'S','o','f','t','w','a','r','e',
'\\','M','i','c','r','o','s','o','f','t',
'\\','W','i','n','d','o','w','s',
'\\','C','u','r','r','e','n','t','V','e','r','s','i','o','n',
'\\','I','n','t','e','r','n','e','t',' ','S','e','t','t','i','n','g','s',0};
- InternetQueryOptionA(NULL, INTERNET_OPTION_PROXY, NULL, &size);
- if (!size) return;
- res = RegOpenKeyW(HKEY_CURRENT_USER, proxy_keyW, &hkey);
- if(res != ERROR_SUCCESS)
return;
- pi = heap_alloc(size);
- if (!pi) return;
- size = sizeof(enabled);
- res = RegQueryValueExA(hkey, "ProxyEnable", 0, &type, (LPBYTE)&enabled, &size);
- if(res != ERROR_SUCCESS || type != REG_DWORD || enabled == 0)
- if(!InternetQueryOptionA(NULL, INTERNET_OPTION_PROXY, pi, &size)) {
RegCloseKey(hkey);
}heap_free(pi); return;
- size = sizeof(proxy);
- res = RegQueryValueExA(hkey, "ProxyServer", 0, &type, (LPBYTE)proxy, &size);
- RegCloseKey(hkey);
- if(res != ERROR_SUCCESS || type != REG_SZ)
return;
- if (pi->dwAccessType != INTERNET_OPEN_TYPE_PROXY) return;
- proxy_port = strchr(proxy, ':');
- if (!proxy_port)
- memset( &UrlComponents, 0, sizeof(UrlComponents));
- UrlComponents.dwStructSize = sizeof(UrlComponents);
- UrlComponents.lpszHostName = hostname;
- UrlComponents.dwHostNameLength = INTERNET_MAX_HOST_NAME_LENGTH;
- if(!InternetCrackUrlA(pi->lpszProxy, 0, 0, &UrlComponents))
- {
heap_free(pi); return;
- }
- if(UrlComponents.nPort == INTERNET_INVALID_PORT_NUMBER)
UrlComponents.nPort = INTERNET_DEFAULT_HTTP_PORT;
- *proxy_port = 0;
- proxy_port_num = atoi(proxy_port + 1);
- TRACE("Setting proxy to %s, port %d\n", debugstr_a(proxy), proxy_port_num);
- TRACE("Setting proxy to %s, port %d\n", UrlComponents.lpszHostName, UrlComponents.nPort);
- set_string_pref(pref, "network.proxy.http", proxy);
- set_string_pref(pref, "network.proxy.ssl", proxy);
set_string_pref(pref, "network.proxy.http", UrlComponents.lpszHostName);
set_string_pref(pref, "network.proxy.ssl", UrlComponents.lpszHostName);
set_int_pref(pref, "network.proxy.type", 1);
- set_int_pref(pref, "network.proxy.http_port", proxy_port_num);
- set_int_pref(pref, "network.proxy.ssl_port", proxy_port_num);
- set_int_pref(pref, "network.proxy.http_port", UrlComponents.nPort);
- set_int_pref(pref, "network.proxy.ssl_port", UrlComponents.nPort);
- heap_free(pi);
}
static void set_preferences(void)
André Hentschel nerv@dawncrow.de wrote:
please ignore also that one. APPINFO_QueryOption needs to be fixed first
And there's still a leak there.