Jacek Caban : urlmon: Directly use otain_user_agent in ObtainUserAgentString.
Alexandre Julliard
julliard at winehq.org
Thu Mar 25 16:49:23 CDT 2021
Module: wine
Branch: master
Commit: 8efbff575a8388fdee4d2b07cfe8620544ccb50e
URL: https://source.winehq.org/git/wine.git/?a=commit;h=8efbff575a8388fdee4d2b07cfe8620544ccb50e
Author: Jacek Caban <jacek at codeweavers.com>
Date: Thu Mar 25 19:34:08 2021 +0100
urlmon: Directly use otain_user_agent in ObtainUserAgentString.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/urlmon/session.c | 44 ++++++++++++++++++++++----------------------
1 file changed, 22 insertions(+), 22 deletions(-)
diff --git a/dlls/urlmon/session.c b/dlls/urlmon/session.c
index 6084ae94b11..b74d56166d9 100644
--- a/dlls/urlmon/session.c
+++ b/dlls/urlmon/session.c
@@ -510,10 +510,18 @@ static size_t obtain_user_agent(WCHAR *ret, size_t size)
OSVERSIONINFOW info = {sizeof(info)};
const WCHAR *os_type, *is_nt;
DWORD res, idx=0;
+ size_t len = 0;
BOOL is_wow;
- size_t len;
HKEY key;
+ EnterCriticalSection(&session_cs);
+ if(user_agent) {
+ len = wcslen(user_agent) + 1;
+ memcpy(ret, user_agent, min(size, len) * sizeof(WCHAR));
+ }
+ LeaveCriticalSection(&session_cs);
+ if(len) return len;
+
GetVersionExW(&info);
is_nt = info.dwPlatformId == VER_PLATFORM_WIN32_NT ? L"NT " : L"";
@@ -685,33 +693,25 @@ HRESULT WINAPI UrlMkSetSessionOption(DWORD dwOption, LPVOID pBuffer, DWORD dwBuf
/**************************************************************************
* ObtainUserAgentString (URLMON.@)
*/
-HRESULT WINAPI ObtainUserAgentString(DWORD dwOption, LPSTR pcszUAOut, DWORD *cbSize)
+HRESULT WINAPI ObtainUserAgentString(DWORD option, char *ret, DWORD *ret_size)
{
- DWORD size;
- HRESULT hres = E_FAIL;
+ DWORD size, len;
+ WCHAR buf[1024];
+ HRESULT hres = S_OK;
- TRACE("(%d %p %p)\n", dwOption, pcszUAOut, cbSize);
+ TRACE("(%d %p %p)\n", option, ret, ret_size);
- if(!pcszUAOut || !cbSize)
+ if(!ret || !ret_size)
return E_INVALIDARG;
- EnterCriticalSection(&session_cs);
-
- ensure_user_agent();
- if(user_agent) {
- size = WideCharToMultiByte(CP_ACP, 0, user_agent, -1, NULL, 0, NULL, NULL);
-
- if(size <= *cbSize) {
- WideCharToMultiByte(CP_ACP, 0, user_agent, -1, pcszUAOut, *cbSize, NULL, NULL);
- hres = S_OK;
- }else {
- hres = E_OUTOFMEMORY;
- }
-
- *cbSize = size;
- }
+ len = obtain_user_agent(buf, ARRAY_SIZE(buf));
+ size = WideCharToMultiByte(CP_ACP, 0, buf, len, NULL, 0, NULL, NULL);
+ if(size <= *ret_size)
+ WideCharToMultiByte(CP_ACP, 0, buf, len, ret, *ret_size+1, NULL, NULL);
+ else
+ hres = E_OUTOFMEMORY;
- LeaveCriticalSection(&session_cs);
+ *ret_size = size;
return hres;
}
More information about the wine-cvs
mailing list