Wine-Devel
By thread
wine-devel@list.winehq.org
By month
Messages by month
- ----- 2026 -----
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2003 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2002 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2001 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
March 2022
- 80 participants
- 2903 messages
[PATCH v3 2/6] win32u: Move reply_message_result implementation from user32.
by Jacek Caban
Signed-off-by: Jacek Caban <jacek(a)codeweavers.com>
---
dlls/user32/message.c | 181 +-----------------------
dlls/win32u/message.c | 264 +++++++++++++++++++++++++++++++++++
dlls/win32u/ntuser_private.h | 9 ++
dlls/win32u/sysparams.c | 2 +
dlls/win32u/win32u_private.h | 1 +
include/ntuser.h | 153 ++++++++++++++++++++
6 files changed, 431 insertions(+), 179 deletions(-)
March 31, 2022
[PATCH v3 1/6] user32: Introduce reply_message_result helper.
by Jacek Caban
Signed-off-by: Jacek Caban <jacek(a)codeweavers.com>
---
dlls/user32/message.c | 42 ++++++++++++++++++++++++++++--------------
1 file changed, 28 insertions(+), 14 deletions(-)
March 31, 2022
Re: [PATCH v2 4/6] win32u: Move process_sent_messages implementation from user32.
by Huw Davies
On Thu, Mar 31, 2022 at 10:45:20AM +0200, Jacek Caban wrote:
> diff --git a/dlls/win32u/message.c b/dlls/win32u/message.c
> index 0253eacc152..841ceb85c6d 100644
> --- a/dlls/win32u/message.c
> +++ b/dlls/win32u/message.c
> +/* unpack a potentially 64-bit pointer, returning 0 when truncated */
> +static inline void *unpack_ptr( ULONGLONG ptr64 )
> +{
> + if ((ULONG_PTR)ptr64 != ptr64) return 0;
> + return (void *)(ULONG_PTR)ptr64;
> +}
> +
> +/* make sure that the buffer contains a valid null-terminated Unicode string */
> +static inline BOOL check_string( LPCWSTR str, size_t size )
> +{
> + for (size /= sizeof(WCHAR); size; size--, str++)
> + if (!*str) return TRUE;
> + return FALSE;
> +}
Hi Jacek,
These two functions are unused.
Huw.
March 31, 2022
[PATCH] explorerframe: Use CRT memory allocation functions.
by Nikolay Sivov
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
---
dlls/explorerframe/nstc.c | 15 +++++++--------
dlls/explorerframe/taskbarlist.c | 5 ++---
2 files changed, 9 insertions(+), 11 deletions(-)
diff --git a/dlls/explorerframe/nstc.c b/dlls/explorerframe/nstc.c
index 315316f7e7a..3b56d33367a 100644
--- a/dlls/explorerframe/nstc.c
+++ b/dlls/explorerframe/nstc.c
@@ -33,7 +33,6 @@
#include "wine/list.h"
#include "wine/debug.h"
-#include "wine/heap.h"
#include "explorerframe_main.h"
@@ -852,7 +851,7 @@ static ULONG WINAPI NSTC2_fnRelease(INameSpaceTreeControl2* iface)
if(!ref)
{
TRACE("Freeing.\n");
- heap_free(This);
+ free(This);
EFRAME_UnlockModule();
}
@@ -989,7 +988,7 @@ static HRESULT WINAPI NSTC2_fnInsertRoot(INameSpaceTreeControl2* iface,
TRACE("%p, %d, %p, %lx, %lx, %p\n", This, iIndex, psiRoot, grfEnumFlags, grfRootStyle, pif);
- new_root = heap_alloc(sizeof(*new_root));
+ new_root = malloc(sizeof(*new_root));
if(!new_root)
return E_OUTOFMEMORY;
@@ -1013,7 +1012,7 @@ static HRESULT WINAPI NSTC2_fnInsertRoot(INameSpaceTreeControl2* iface,
if(!new_root->htreeitem)
{
WARN("Failed to add the root.\n");
- heap_free(new_root);
+ free(new_root);
return E_FAIL;
}
@@ -1081,7 +1080,7 @@ static HRESULT WINAPI NSTC2_fnRemoveRoot(INameSpaceTreeControl2* iface,
events_OnItemDeleted(This, root->psi, TRUE);
SendMessageW(This->hwnd_tv, TVM_DELETEITEM, 0, (LPARAM)root->htreeitem);
list_remove(&root->entry);
- heap_free(root);
+ free(root);
return S_OK;
}
else
@@ -1123,7 +1122,7 @@ static HRESULT WINAPI NSTC2_fnGetRootItems(INameSpaceTreeControl2* iface,
if(!count)
return E_INVALIDARG;
- array = heap_alloc(sizeof(LPITEMIDLIST)*count);
+ array = malloc(sizeof(LPITEMIDLIST)*count);
i = 0;
LIST_FOR_EACH_ENTRY(root, &This->roots, nstc_root, entry)
@@ -1137,7 +1136,7 @@ static HRESULT WINAPI NSTC2_fnGetRootItems(INameSpaceTreeControl2* iface,
for(i = 0; i < count; i++)
ILFree(array[i]);
- heap_free(array);
+ free(array);
return hr;
}
@@ -1598,7 +1597,7 @@ HRESULT NamespaceTreeControl_Constructor(IUnknown *pUnkOuter, REFIID riid, void
EFRAME_LockModule();
- nstc = heap_alloc_zero(sizeof(*nstc));
+ nstc = calloc(1, sizeof(*nstc));
if (!nstc)
return E_OUTOFMEMORY;
diff --git a/dlls/explorerframe/taskbarlist.c b/dlls/explorerframe/taskbarlist.c
index b4bc104cd6b..dd61cc62ae4 100644
--- a/dlls/explorerframe/taskbarlist.c
+++ b/dlls/explorerframe/taskbarlist.c
@@ -21,7 +21,6 @@
#include "explorerframe_main.h"
#include "wine/debug.h"
-#include "wine/heap.h"
WINE_DEFAULT_DEBUG_CHANNEL(explorerframe);
@@ -81,7 +80,7 @@ static ULONG STDMETHODCALLTYPE taskbar_list_Release(ITaskbarList4 *iface)
if (!refcount)
{
- heap_free(This);
+ free(This);
EFRAME_UnlockModule();
}
@@ -309,7 +308,7 @@ HRESULT TaskbarList_Constructor(IUnknown *outer, REFIID riid, void **taskbar_lis
return CLASS_E_NOAGGREGATION;
}
- object = heap_alloc(sizeof(*object));
+ object = malloc(sizeof(*object));
if (!object)
{
ERR("Failed to allocate taskbar list object memory\n");
--
2.35.1
March 31, 2022
[PATCH] sxs: Use CRT memory allocation functions.
by Nikolay Sivov
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
---
dlls/appwiz.cpl/appwiz.c | 44 ++++++++++++++++++++--------------------
1 file changed, 22 insertions(+), 22 deletions(-)
diff --git a/dlls/appwiz.cpl/appwiz.c b/dlls/appwiz.cpl/appwiz.c
index 593c8644b7e..012bc054129 100644
--- a/dlls/appwiz.cpl/appwiz.c
+++ b/dlls/appwiz.cpl/appwiz.c
@@ -106,19 +106,19 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason,
*/
static void FreeAppInfo(APPINFO *info)
{
- HeapFree(GetProcessHeap(), 0, info->title);
- HeapFree(GetProcessHeap(), 0, info->path);
- HeapFree(GetProcessHeap(), 0, info->path_modify);
- HeapFree(GetProcessHeap(), 0, info->icon);
- HeapFree(GetProcessHeap(), 0, info->publisher);
- HeapFree(GetProcessHeap(), 0, info->version);
- HeapFree(GetProcessHeap(), 0, info->contact);
- HeapFree(GetProcessHeap(), 0, info->helplink);
- HeapFree(GetProcessHeap(), 0, info->helptelephone);
- HeapFree(GetProcessHeap(), 0, info->readme);
- HeapFree(GetProcessHeap(), 0, info->urlupdateinfo);
- HeapFree(GetProcessHeap(), 0, info->comments);
- HeapFree(GetProcessHeap(), 0, info);
+ free(info->title);
+ free(info->path);
+ free(info->path_modify);
+ free(info->icon);
+ free(info->publisher);
+ free(info->version);
+ free(info->contact);
+ free(info->helplink);
+ free(info->helptelephone);
+ free(info->readme);
+ free(info->urlupdateinfo);
+ free(info->comments);
+ free(info);
}
static WCHAR *get_reg_str(HKEY hkey, const WCHAR *value)
@@ -127,7 +127,7 @@ static WCHAR *get_reg_str(HKEY hkey, const WCHAR *value)
WCHAR *ret = NULL;
if (!RegQueryValueExW(hkey, value, NULL, &type, NULL, &len) && type == REG_SZ)
{
- if (!(ret = HeapAlloc(GetProcessHeap(), 0, len))) return NULL;
+ if (!(ret = malloc(len))) return NULL;
RegQueryValueExW(hkey, value, 0, 0, (BYTE *)ret, &len);
}
return ret;
@@ -176,12 +176,12 @@ static BOOL ReadApplicationsFromRegistry(HKEY root)
{
int len = lstrlenW(L"msiexec /x%s") + lstrlenW(subKeyName);
- if (!(command = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)))) goto err;
+ if (!(command = malloc(len * sizeof(WCHAR)))) goto err;
wsprintfW(command, L"msiexec /x%s", subKeyName);
}
else if (!RegQueryValueExW(hkeyApp, L"UninstallString", 0, 0, NULL, &uninstlen))
{
- if (!(command = HeapAlloc(GetProcessHeap(), 0, uninstlen))) goto err;
+ if (!(command = malloc(uninstlen))) goto err;
RegQueryValueExW(hkeyApp, L"UninstallString", 0, 0, (BYTE *)command, &uninstlen);
}
else
@@ -191,10 +191,10 @@ static BOOL ReadApplicationsFromRegistry(HKEY root)
continue;
}
- info = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(struct APPINFO));
+ info = calloc(1, sizeof(*info));
if (!info) goto err;
- info->title = HeapAlloc(GetProcessHeap(), 0, displen);
+ info->title = malloc(displen);
if (!info->title)
goto err;
@@ -209,7 +209,7 @@ static BOOL ReadApplicationsFromRegistry(HKEY root)
info->icon = 0;
else
{
- info->icon = HeapAlloc(GetProcessHeap(), 0, displen);
+ info->icon = malloc(displen);
if (!info->icon)
goto err;
@@ -259,12 +259,12 @@ static BOOL ReadApplicationsFromRegistry(HKEY root)
{
int len = lstrlenW(L"msiexec /i%s") + lstrlenW(subKeyName);
- if (!(info->path_modify = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)))) goto err;
+ if (!(info->path_modify = malloc(len * sizeof(WCHAR)))) goto err;
wsprintfW(info->path_modify, L"msiexec /i%s", subKeyName);
}
else if (!RegQueryValueExW(hkeyApp, L"ModifyPath", 0, 0, NULL, &displen))
{
- if (!(info->path_modify = HeapAlloc(GetProcessHeap(), 0, displen))) goto err;
+ if (!(info->path_modify = malloc(displen))) goto err;
RegQueryValueExW(hkeyApp, L"ModifyPath", 0, 0, (BYTE *)info->path_modify, &displen);
}
}
@@ -286,7 +286,7 @@ static BOOL ReadApplicationsFromRegistry(HKEY root)
err:
RegCloseKey(hkeyApp);
if (info) FreeAppInfo(info);
- HeapFree(GetProcessHeap(), 0, command);
+ free(command);
return FALSE;
}
--
2.35.1
March 31, 2022
[PATCH] atl: Use CRT allocation functions.
by Nikolay Sivov
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
---
dlls/atl/atl.c | 11 +++++------
dlls/atl/atl30.c | 2 +-
dlls/atl/atl_ax.c | 24 +++++++++++------------
dlls/atl/registrar.c | 45 ++++++++++++++++++++++----------------------
4 files changed, 40 insertions(+), 42 deletions(-)
diff --git a/dlls/atl/atl.c b/dlls/atl/atl.c
index ed6afe4ea2e..87a24e33ed7 100644
--- a/dlls/atl/atl.c
+++ b/dlls/atl/atl.c
@@ -23,7 +23,6 @@
#include "atlcom.h"
#include "wine/debug.h"
-#include "wine/heap.h"
WINE_DEFAULT_DEBUG_CHANNEL(atl);
@@ -294,7 +293,7 @@ HRESULT WINAPI AtlModuleAddTermFunc(_ATL_MODULE *pM, _ATL_TERMFUNC *pFunc, DWORD
TRACE("version %04x (%p %p %Id)\n", _ATL_VER, pM, pFunc, dw);
if (_ATL_VER > _ATL_VER_30 || pM->cbSize > ATLVer1Size) {
- termfunc_elem = HeapAlloc(GetProcessHeap(), 0, sizeof(_ATL_TERMFUNC_ELEM));
+ termfunc_elem = malloc(sizeof(*termfunc_elem));
termfunc_elem->pFunc = pFunc;
termfunc_elem->dw = dw;
termfunc_elem->pNext = pM->m_pTermFuncs;
@@ -320,7 +319,7 @@ void WINAPI AtlCallTermFunc(_ATL_MODULE *pM)
iter->pFunc(iter->dw);
tmp = iter;
iter = iter->pNext;
- HeapFree(GetProcessHeap(), 0, tmp);
+ free(tmp);
}
pM->m_pTermFuncs = NULL;
@@ -342,13 +341,13 @@ HRESULT WINAPI AtlLoadTypeLib(HINSTANCE inst, LPCOLESTR lpszIndex,
TRACE("(%p %s %p %p)\n", inst, debugstr_w(lpszIndex), pbstrPath, ppTypeLib);
index_len = lpszIndex ? lstrlenW(lpszIndex) : 0;
- path = heap_alloc((MAX_PATH+index_len)*sizeof(WCHAR) + sizeof(L".tlb"));
+ path = malloc((MAX_PATH+index_len)*sizeof(WCHAR) + sizeof(L".tlb"));
if(!path)
return E_OUTOFMEMORY;
path_len = GetModuleFileNameW(inst, path, MAX_PATH);
if(!path_len) {
- heap_free(path);
+ free(path);
return HRESULT_FROM_WIN32(GetLastError());
}
@@ -374,7 +373,7 @@ HRESULT WINAPI AtlLoadTypeLib(HINSTANCE inst, LPCOLESTR lpszIndex,
}
}
- heap_free(path);
+ free(path);
if(FAILED(hres))
return hres;
diff --git a/dlls/atl/atl30.c b/dlls/atl/atl30.c
index e84656998b8..d7d130c2a03 100644
--- a/dlls/atl/atl30.c
+++ b/dlls/atl/atl30.c
@@ -121,7 +121,7 @@ HRESULT WINAPI AtlModuleTerm(_ATL_MODULE *pM)
iter->pFunc(iter->dw);
tmp = iter;
iter = iter->pNext;
- HeapFree(GetProcessHeap(), 0, tmp);
+ free(tmp);
}
}
diff --git a/dlls/atl/atl_ax.c b/dlls/atl/atl_ax.c
index 04b0afdb759..4ff0a796d3b 100644
--- a/dlls/atl/atl_ax.c
+++ b/dlls/atl/atl_ax.c
@@ -63,12 +63,12 @@ static LRESULT CALLBACK AtlAxWin_wndproc( HWND hWnd, UINT wMsg, WPARAM wParam, L
if ( wMsg == WM_CREATE )
{
DWORD len = GetWindowTextLengthW( hWnd ) + 1;
- WCHAR *ptr = HeapAlloc( GetProcessHeap(), 0, len*sizeof(WCHAR) );
+ WCHAR *ptr = malloc( len*sizeof(WCHAR) );
if (!ptr)
return 1;
GetWindowTextW( hWnd, ptr, len );
AtlAxCreateControlEx( ptr, hWnd, NULL, NULL, NULL, NULL, NULL );
- HeapFree( GetProcessHeap(), 0, ptr );
+ free( ptr );
return 0;
}
return DefWindowProcW( hWnd, wMsg, wParam, lParam );
@@ -225,7 +225,7 @@ static ULONG WINAPI OleClientSite_Release(IOleClientSite *iface)
if (!ref)
{
IOCS_Detach( This );
- HeapFree( GetProcessHeap(), 0, This );
+ free( This );
}
return ref;
@@ -945,7 +945,7 @@ static HRESULT IOCS_Create( HWND hWnd, IUnknown *pUnkControl, IUnknown **contain
return S_OK;
*container = NULL;
- This = HeapAlloc(GetProcessHeap(), 0, sizeof(IOCS));
+ This = malloc(sizeof(*This));
if (!This)
return E_OUTOFMEMORY;
@@ -969,7 +969,7 @@ static HRESULT IOCS_Create( HWND hWnd, IUnknown *pUnkControl, IUnknown **contain
else
{
IOCS_Detach( This );
- HeapFree(GetProcessHeap(), 0, This);
+ free(This);
}
return hr;
@@ -1160,7 +1160,7 @@ static inline BOOL advance_array(WORD **pptr, DWORD *palloc, DWORD *pfilled, con
if ( (*pfilled + size) > *palloc )
{
*palloc = ((*pfilled+size) + 0xFF) & ~0xFF;
- *pptr = HeapReAlloc( GetProcessHeap(), 0, *pptr, *palloc * sizeof(WORD) );
+ *pptr = realloc( *pptr, *palloc * sizeof(WORD) );
if (!*pptr)
return FALSE;
}
@@ -1186,7 +1186,7 @@ static LPDLGTEMPLATEW AX_ConvertDialogTemplate(LPCDLGTEMPLATEW src_tmpl)
DWORD style;
filled = 0; allocated = 256;
- output = HeapAlloc( GetProcessHeap(), 0, allocated * sizeof(WORD) );
+ output = malloc( allocated * sizeof(WORD) );
if (!output)
return NULL;
@@ -1307,12 +1307,12 @@ HWND WINAPI AtlAxCreateDialogA(HINSTANCE hInst, LPCSTR name, HWND owner, DLGPROC
return AtlAxCreateDialogW( hInst, (LPCWSTR) name, owner, dlgProc, param );
length = MultiByteToWideChar( CP_ACP, 0, name, -1, NULL, 0 );
- nameW = HeapAlloc( GetProcessHeap(), 0, length * sizeof(WCHAR) );
+ nameW = malloc( length * sizeof(WCHAR) );
if (nameW)
{
MultiByteToWideChar( CP_ACP, 0, name, -1, nameW, length );
res = AtlAxCreateDialogW( hInst, nameW, owner, dlgProc, param );
- HeapFree( GetProcessHeap(), 0, nameW );
+ free( nameW );
}
return res;
}
@@ -1348,8 +1348,8 @@ HWND WINAPI AtlAxCreateDialogW(HINSTANCE hInst, LPCWSTR name, HWND owner, DLGPRO
newptr = AX_ConvertDialogTemplate( ptr );
if ( newptr )
{
- res = CreateDialogIndirectParamW( hInst, newptr, owner, dlgProc, param );
- HeapFree( GetProcessHeap(), 0, newptr );
+ res = CreateDialogIndirectParamW( hInst, newptr, owner, dlgProc, param );
+ free( newptr );
} else
res = NULL;
FreeResource ( hrsrc );
@@ -1425,7 +1425,7 @@ INT_PTR WINAPI AtlAxDialogBoxW(HINSTANCE instance, const WCHAR *name,
return 0;
ret = DialogBoxIndirectParamW(instance, template, owner, proc, param);
- HeapFree(GetProcessHeap(), 0, template);
+ free(template);
return ret;
}
diff --git a/dlls/atl/registrar.c b/dlls/atl/registrar.c
index 061483f6513..5a3eef7dd4f 100644
--- a/dlls/atl/registrar.c
+++ b/dlls/atl/registrar.c
@@ -74,7 +74,7 @@ static inline Registrar *impl_from_IRegistrar(IRegistrar *iface)
static void strbuf_init(strbuf *buf)
{
- buf->str = HeapAlloc(GetProcessHeap(), 0, 128*sizeof(WCHAR));
+ buf->str = malloc(128*sizeof(WCHAR));
buf->alloc = 128;
buf->len = 0;
}
@@ -85,7 +85,7 @@ static void strbuf_write(LPCOLESTR str, strbuf *buf, int len)
len = lstrlenW(str);
if(buf->len+len+1 >= buf->alloc) {
buf->alloc = (buf->len+len)<<1;
- buf->str = HeapReAlloc(GetProcessHeap(), 0, buf->str, buf->alloc*sizeof(WCHAR));
+ buf->str = realloc(buf->str, buf->alloc*sizeof(WCHAR));
}
memcpy(buf->str+buf->len, str, len*sizeof(OLECHAR));
buf->len += len;
@@ -292,7 +292,7 @@ static HRESULT do_process_key(LPCOLESTR *pstr, HKEY parent_key, strbuf *buf, BOO
if(FAILED(hres))
break;
count = (lstrlenW(buf->str) + 1) / 2;
- bytes = HeapAlloc(GetProcessHeap(), 0, count);
+ bytes = malloc(count);
if(bytes == NULL) {
hres = E_OUTOFMEMORY;
break;
@@ -313,7 +313,7 @@ static HRESULT do_process_key(LPCOLESTR *pstr, HKEY parent_key, strbuf *buf, BOO
hres = HRESULT_FROM_WIN32(lres);
}
}
- HeapFree(GetProcessHeap(), 0, bytes);
+ free(bytes);
break;
}
default:
@@ -360,7 +360,7 @@ static HRESULT do_process_key(LPCOLESTR *pstr, HKEY parent_key, strbuf *buf, BOO
break;
}
- HeapFree(GetProcessHeap(), 0, name.str);
+ free(name.str);
if(hkey && key_type != IS_VAL)
RegCloseKey(hkey);
*pstr = iter;
@@ -411,7 +411,7 @@ static HRESULT do_process_root_key(LPCOLESTR data, BOOL do_register)
if(FAILED(hres))
break;
}
- HeapFree(GetProcessHeap(), 0, buf.str);
+ free(buf.str);
return hres;
}
@@ -426,7 +426,7 @@ static HRESULT string_register(Registrar *This, LPCOLESTR data, BOOL do_register
hres = do_preprocess(This, data, &buf);
if(FAILED(hres)) {
WARN("preprocessing failed!\n");
- HeapFree(GetProcessHeap(), 0, buf.str);
+ free(buf.str);
return hres;
}
@@ -434,7 +434,7 @@ static HRESULT string_register(Registrar *This, LPCOLESTR data, BOOL do_register
if(FAILED(hres) && do_register)
do_process_root_key(buf.str, FALSE);
- HeapFree(GetProcessHeap(), 0, buf.str);
+ free(buf.str);
return hres;
}
@@ -456,13 +456,13 @@ static HRESULT resource_register(Registrar *This, LPCOLESTR resFileName,
reslen = SizeofResource(hins, src);
if(regstra) {
len = MultiByteToWideChar(CP_ACP, 0, regstra, reslen, NULL, 0)+1;
- regstrw = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len*sizeof(WCHAR));
+ regstrw = calloc(len, sizeof(WCHAR));
MultiByteToWideChar(CP_ACP, 0, regstra, reslen, regstrw, len);
regstrw[len-1] = '\0';
hres = string_register(This, regstrw, do_register);
- HeapFree(GetProcessHeap(), 0, regstrw);
+ free(regstrw);
}else {
WARN("could not load resource\n");
hres = HRESULT_FROM_WIN32(GetLastError());
@@ -491,21 +491,21 @@ static HRESULT file_register(Registrar *This, LPCOLESTR fileName, BOOL do_regist
file = CreateFileW(fileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
if(file != INVALID_HANDLE_VALUE) {
filelen = GetFileSize(file, NULL);
- regstra = HeapAlloc(GetProcessHeap(), 0, filelen);
+ regstra = malloc(filelen);
if(ReadFile(file, regstra, filelen, NULL, NULL)) {
len = MultiByteToWideChar(CP_ACP, 0, regstra, filelen, NULL, 0)+1;
- regstrw = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len*sizeof(WCHAR));
+ regstrw = calloc(len, sizeof(WCHAR));
MultiByteToWideChar(CP_ACP, 0, regstra, filelen, regstrw, len);
regstrw[len-1] = '\0';
hres = string_register(This, regstrw, do_register);
- HeapFree(GetProcessHeap(), 0, regstrw);
+ free(regstrw);
}else {
WARN("Failed to read file %s\n", debugstr_w(fileName));
hres = HRESULT_FROM_WIN32(GetLastError());
}
- HeapFree(GetProcessHeap(), 0, regstra);
+ free(regstra);
CloseHandle(file);
}else {
WARN("Could not open file %s\n", debugstr_w(fileName));
@@ -545,7 +545,7 @@ static ULONG WINAPI Registrar_Release(IRegistrar *iface)
TRACE("(%p) ->%ld\n", This, ref);
if(!ref) {
IRegistrar_ClearReplacements(iface);
- HeapFree(GetProcessHeap(), 0, This);
+ free(This);
}
return ref;
}
@@ -558,14 +558,14 @@ static HRESULT WINAPI Registrar_AddReplacement(IRegistrar *iface, LPCOLESTR Key,
TRACE("(%p)->(%s %s)\n", This, debugstr_w(Key), debugstr_w(item));
- new_rep = HeapAlloc(GetProcessHeap(), 0, sizeof(rep_list));
+ new_rep = malloc(sizeof(*new_rep));
new_rep->key_len = lstrlenW(Key);
- new_rep->key = HeapAlloc(GetProcessHeap(), 0, (new_rep->key_len + 1) * sizeof(OLECHAR));
+ new_rep->key = malloc((new_rep->key_len + 1) * sizeof(OLECHAR));
memcpy(new_rep->key, Key, (new_rep->key_len+1)*sizeof(OLECHAR));
len = lstrlenW(item)+1;
- new_rep->item = HeapAlloc(GetProcessHeap(), 0, len*sizeof(OLECHAR));
+ new_rep->item = malloc(len*sizeof(OLECHAR));
memcpy(new_rep->item, item, len*sizeof(OLECHAR));
new_rep->next = This->rep;
@@ -587,9 +587,9 @@ static HRESULT WINAPI Registrar_ClearReplacements(IRegistrar *iface)
iter = This->rep;
while(iter) {
iter2 = iter->next;
- HeapFree(GetProcessHeap(), 0, iter->key);
- HeapFree(GetProcessHeap(), 0, iter->item);
- HeapFree(GetProcessHeap(), 0, iter);
+ free(iter->key);
+ free(iter->item);
+ free(iter);
iter = iter2;
}
@@ -680,13 +680,12 @@ HRESULT WINAPI AtlCreateRegistrar(IRegistrar **ret)
{
Registrar *registrar;
- registrar = HeapAlloc(GetProcessHeap(), 0, sizeof(*registrar));
+ registrar = calloc(1, sizeof(*registrar));
if(!registrar)
return E_OUTOFMEMORY;
registrar->IRegistrar_iface.lpVtbl = &RegistrarVtbl;
registrar->ref = 1;
- registrar->rep = NULL;
*ret = ®istrar->IRegistrar_iface;
return S_OK;
--
2.35.1
March 31, 2022
Re: [PATCH] crypt32/tests: Use wide character string literals.
by Marvin
Hi,
While running your changed tests, I think I found new failures.
Being a bot and all I'm not very good at pattern recognition, so I might be
wrong, but could you please double-check?
Full results can be found at:
https://testbot.winehq.org/JobDetails.pl?Key=111653
Your paranoid android.
=== w1064v1507 (64 bit report) ===
Report validation errors:
crypt32:store crashed (c0000374)
March 31, 2022
[PATCH] wined3d: Reset and reuse Vulkan descriptor pools.
by Jan Sikorski
Creating and destroying them is fairly slow.
Signed-off-by: Jan Sikorski <jsikorski(a)codeweavers.com>
---
dlls/wined3d/context_vk.c | 104 +++++++++++++++++++++++----------
dlls/wined3d/view.c | 4 +-
dlls/wined3d/wined3d_private.h | 9 ++-
3 files changed, 79 insertions(+), 38 deletions(-)
diff --git a/dlls/wined3d/context_vk.c b/dlls/wined3d/context_vk.c
index 436973fe76f..9891bf0b541 100644
--- a/dlls/wined3d/context_vk.c
+++ b/dlls/wined3d/context_vk.c
@@ -685,17 +685,33 @@ void wined3d_context_vk_destroy_vk_framebuffer(struct wined3d_context_vk *contex
o->command_buffer_id = command_buffer_id;
}
-static void wined3d_context_vk_destroy_vk_descriptor_pool(struct wined3d_context_vk *context_vk,
- VkDescriptorPool vk_descriptor_pool, uint64_t command_buffer_id)
+static void wined3d_context_vk_return_vk_descriptor_pool(struct wined3d_context_vk *context_vk,
+ VkDescriptorPool vk_descriptor_pool)
{
struct wined3d_device_vk *device_vk = wined3d_device_vk(context_vk->c.device);
const struct wined3d_vk_info *vk_info = context_vk->vk_info;
+
+ if (!wined3d_array_reserve((void **)&context_vk->vk_descriptor_pools, &context_vk->vk_descriptor_pools_size,
+ context_vk->vk_descriptor_pool_count + 1, sizeof(*context_vk->vk_descriptor_pools)))
+ {
+ VK_CALL(vkDestroyDescriptorPool(device_vk->vk_device, vk_descriptor_pool, NULL));
+ TRACE("Destroying descriptor pool 0x%s.\n", wine_dbgstr_longlong(vk_descriptor_pool));
+ return;
+ }
+
+ VK_CALL(vkResetDescriptorPool(device_vk->vk_device, vk_descriptor_pool, 0));
+ context_vk->vk_descriptor_pools[context_vk->vk_descriptor_pool_count++] = vk_descriptor_pool;
+}
+
+static void wined3d_context_vk_reset_vk_descriptor_pool(struct wined3d_context_vk *context_vk,
+ VkDescriptorPool vk_descriptor_pool, uint64_t command_buffer_id)
+{
struct wined3d_retired_object_vk *o;
if (context_vk->completed_command_buffer_id > command_buffer_id)
{
- VK_CALL(vkDestroyDescriptorPool(device_vk->vk_device, vk_descriptor_pool, NULL));
- TRACE("Destroyed descriptor pool 0x%s.\n", wine_dbgstr_longlong(vk_descriptor_pool));
+ wined3d_context_vk_return_vk_descriptor_pool(context_vk, vk_descriptor_pool);
+ TRACE("Reset descriptor pool 0x%s.\n", wine_dbgstr_longlong(vk_descriptor_pool));
return;
}
@@ -1111,8 +1127,8 @@ static void wined3d_context_vk_cleanup_resources(struct wined3d_context_vk *cont
break;
case WINED3D_RETIRED_DESCRIPTOR_POOL_VK:
- VK_CALL(vkDestroyDescriptorPool(device_vk->vk_device, o->u.vk_descriptor_pool, NULL));
- TRACE("Destroyed descriptor pool 0x%s.\n", wine_dbgstr_longlong(o->u.vk_descriptor_pool));
+ wined3d_context_vk_return_vk_descriptor_pool(context_vk, o->u.vk_descriptor_pool);
+ TRACE("Reset descriptor pool 0x%s.\n", wine_dbgstr_longlong(o->u.vk_descriptor_pool));
break;
case WINED3D_RETIRED_MEMORY_VK:
@@ -1581,6 +1597,7 @@ void wined3d_context_vk_cleanup(struct wined3d_context_vk *context_vk)
struct wined3d_command_buffer_vk *buffer = &context_vk->current_command_buffer;
struct wined3d_device_vk *device_vk = wined3d_device_vk(context_vk->c.device);
const struct wined3d_vk_info *vk_info = context_vk->vk_info;
+ unsigned int i;
if (buffer->vk_command_buffer)
{
@@ -1594,8 +1611,9 @@ void wined3d_context_vk_cleanup(struct wined3d_context_vk *context_vk)
heap_free(context_vk->compute.bindings.bindings);
heap_free(context_vk->graphics.bindings.bindings);
- if (context_vk->vk_descriptor_pool)
- VK_CALL(vkDestroyDescriptorPool(device_vk->vk_device, context_vk->vk_descriptor_pool, NULL));
+ for (i = 0; i < context_vk->vk_descriptor_pool_count; ++i)
+ VK_CALL(vkDestroyDescriptorPool(device_vk->vk_device, context_vk->vk_descriptor_pools[i], NULL));
+ heap_free(context_vk->vk_descriptor_pools);
if (context_vk->vk_framebuffer)
VK_CALL(vkDestroyFramebuffer(device_vk->vk_device, context_vk->vk_framebuffer, NULL));
VK_CALL(vkDestroyCommandPool(device_vk->vk_device, context_vk->vk_command_pool, NULL));
@@ -2655,48 +2673,71 @@ static VkResult wined3d_context_vk_create_vk_descriptor_pool(struct wined3d_devi
return vr;
}
-VkResult wined3d_context_vk_create_vk_descriptor_set(struct wined3d_context_vk *context_vk,
- VkDescriptorSetLayout vk_set_layout, VkDescriptorSet *vk_descriptor_set)
+VkDescriptorPool wined3d_context_vk_get_vk_descriptor_pool(struct wined3d_context_vk *context_vk)
{
- struct wined3d_device_vk *device_vk = wined3d_device_vk(context_vk->c.device);
- const struct wined3d_vk_info *vk_info = context_vk->vk_info;
- struct VkDescriptorSetAllocateInfo set_desc;
VkResult vr;
- if (!context_vk->vk_descriptor_pool && (vr = wined3d_context_vk_create_vk_descriptor_pool(device_vk,
- vk_info, &context_vk->vk_descriptor_pool)))
+ if (context_vk->vk_descriptor_pool_count)
+ return context_vk->vk_descriptor_pools[0];
+
+ if (!wined3d_array_reserve((void **)&context_vk->vk_descriptor_pools, &context_vk->vk_descriptor_pools_size,
+ 1, sizeof(*context_vk->vk_descriptor_pools)))
+ {
+ ERR("Failed to allocate array.\n");
+ return VK_NULL_HANDLE;
+ }
+
+ if ((vr = wined3d_context_vk_create_vk_descriptor_pool(wined3d_device_vk(context_vk->c.device),
+ context_vk->vk_info, context_vk->vk_descriptor_pools)))
{
WARN("Failed to create descriptor pool, vr %s.\n", wined3d_debug_vkresult(vr));
- return vr;
+ return VK_NULL_HANDLE;
}
+ context_vk->vk_descriptor_pool_count = 1;
+ return context_vk->vk_descriptor_pools[0];
+}
+
+VkDescriptorSet wined3d_context_vk_create_vk_descriptor_set(struct wined3d_context_vk *context_vk,
+ VkDescriptorSetLayout vk_set_layout)
+{
+ struct wined3d_device_vk *device_vk = wined3d_device_vk(context_vk->c.device);
+ const struct wined3d_vk_info *vk_info = context_vk->vk_info;
+ struct VkDescriptorSetAllocateInfo set_desc;
+ VkDescriptorPool vk_descriptor_pool;
+ VkDescriptorSet vk_descriptor_set;
+ VkResult vr;
+
+ if (!(vk_descriptor_pool = wined3d_context_vk_get_vk_descriptor_pool(context_vk)))
+ return VK_NULL_HANDLE;
+
set_desc.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO;
set_desc.pNext = NULL;
- set_desc.descriptorPool = context_vk->vk_descriptor_pool;
+ set_desc.descriptorPool = vk_descriptor_pool;
set_desc.descriptorSetCount = 1;
set_desc.pSetLayouts = &vk_set_layout;
- if ((vr = VK_CALL(vkAllocateDescriptorSets(device_vk->vk_device, &set_desc, vk_descriptor_set))) >= 0)
- return vr;
+ if ((vr = VK_CALL(vkAllocateDescriptorSets(device_vk->vk_device, &set_desc, &vk_descriptor_set))) >= 0)
+ return vk_descriptor_set;
if (vr == VK_ERROR_FRAGMENTED_POOL || vr == VK_ERROR_OUT_OF_POOL_MEMORY)
{
- wined3d_context_vk_destroy_vk_descriptor_pool(context_vk,
- context_vk->vk_descriptor_pool, context_vk->current_command_buffer.id);
- context_vk->vk_descriptor_pool = VK_NULL_HANDLE;
- if ((vr = wined3d_context_vk_create_vk_descriptor_pool(device_vk, vk_info, &context_vk->vk_descriptor_pool)))
+ wined3d_context_vk_reset_vk_descriptor_pool(context_vk,
+ vk_descriptor_pool, context_vk->current_command_buffer.id);
+ context_vk->vk_descriptor_pools[0] = context_vk->vk_descriptor_pools[--context_vk->vk_descriptor_pool_count];
+ if (!(vk_descriptor_pool = wined3d_context_vk_get_vk_descriptor_pool(context_vk)))
{
- WARN("Failed to create descriptor pool, vr %s.\n", wined3d_debug_vkresult(vr));
- return vr;
+ WARN("Failed to create descriptor pool.\n");
+ return VK_NULL_HANDLE;
}
- set_desc.descriptorPool = context_vk->vk_descriptor_pool;
- if ((vr = VK_CALL(vkAllocateDescriptorSets(device_vk->vk_device, &set_desc, vk_descriptor_set))) >= 0)
- return vr;
+ set_desc.descriptorPool = vk_descriptor_pool;
+ if ((vr = VK_CALL(vkAllocateDescriptorSets(device_vk->vk_device, &set_desc, &vk_descriptor_set))) >= 0)
+ return vk_descriptor_set;
}
WARN("Failed to allocate descriptor set, vr %s.\n", wined3d_debug_vkresult(vr));
- return vr;
+ return VK_NULL_HANDLE;
}
static bool wined3d_shader_descriptor_writes_vk_add_write(struct wined3d_shader_descriptor_writes_vk *writes,
@@ -2949,7 +2990,6 @@ static bool wined3d_context_vk_update_descriptors(struct wined3d_context_vk *con
VkPipelineLayout vk_pipeline_layout;
VkPipelineBindPoint vk_bind_point;
VkDescriptorSet vk_descriptor_set;
- VkResult vr;
size_t i;
switch (pipeline)
@@ -2973,9 +3013,9 @@ static bool wined3d_context_vk_update_descriptors(struct wined3d_context_vk *con
return false;
}
- if ((vr = wined3d_context_vk_create_vk_descriptor_set(context_vk, vk_set_layout, &vk_descriptor_set)))
+ if (!(vk_descriptor_set = wined3d_context_vk_create_vk_descriptor_set(context_vk, vk_set_layout)))
{
- WARN("Failed to create descriptor set, vr %s.\n", wined3d_debug_vkresult(vr));
+ WARN("Failed to create descriptor set.\n");
return false;
}
diff --git a/dlls/wined3d/view.c b/dlls/wined3d/view.c
index 087aa21b75d..051da2891f3 100644
--- a/dlls/wined3d/view.c
+++ b/dlls/wined3d/view.c
@@ -1922,7 +1922,6 @@ void wined3d_unordered_access_view_vk_clear(struct wined3d_unordered_access_view
DWORD uav_location;
unsigned int level;
bool is_array;
- VkResult vr;
device_vk = wined3d_device_vk(device);
state = &device_vk->uav_clear_state;
@@ -2124,8 +2123,7 @@ void wined3d_unordered_access_view_vk_clear(struct wined3d_unordered_access_view
vk_info = context_vk->vk_info;
- vr = wined3d_context_vk_create_vk_descriptor_set(context_vk, layout->vk_set_layout, &vk_writes[0].dstSet);
- if (vr != VK_SUCCESS)
+ if (!(vk_writes[0].dstSet = wined3d_context_vk_create_vk_descriptor_set(context_vk, layout->vk_set_layout)))
{
ERR("Failed to create descriptor set.\n");
wined3d_context_vk_destroy_bo(context_vk, &constants_bo);
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 574bcdaa26f..54bccb3db5e 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -2600,7 +2600,10 @@ struct wined3d_context_vk
VkFramebuffer vk_framebuffer;
VkRenderPass vk_render_pass;
- VkDescriptorPool vk_descriptor_pool;
+
+ SIZE_T vk_descriptor_pools_size;
+ SIZE_T vk_descriptor_pool_count;
+ VkDescriptorPool *vk_descriptor_pools;
VkSampleCountFlagBits sample_count;
unsigned int rt_count;
@@ -2682,8 +2685,8 @@ void wined3d_context_vk_submit_command_buffer(struct wined3d_context_vk *context
unsigned int wait_semaphore_count, const VkSemaphore *wait_semaphores, const VkPipelineStageFlags *wait_stages,
unsigned int signal_semaphore_count, const VkSemaphore *signal_semaphores) DECLSPEC_HIDDEN;
void wined3d_context_vk_wait_command_buffer(struct wined3d_context_vk *context_vk, uint64_t id) DECLSPEC_HIDDEN;
-VkResult wined3d_context_vk_create_vk_descriptor_set(struct wined3d_context_vk *context_vk,
- VkDescriptorSetLayout vk_set_layout, VkDescriptorSet *vk_descriptor_set) DECLSPEC_HIDDEN;
+VkDescriptorSet wined3d_context_vk_create_vk_descriptor_set(struct wined3d_context_vk *context_vk,
+ VkDescriptorSetLayout vk_set_layout) DECLSPEC_HIDDEN;
typedef void (*APPLYSTATEFUNC)(struct wined3d_context *ctx, const struct wined3d_state *state, DWORD state_id);
--
2.32.0
March 31, 2022
[PATCH 2/2] winemenubuilder: Use the full path name when extracting an icon.
by Sven Baars
Signed-off-by: Sven Baars <sbaars(a)codeweavers.com>
---
This fixes icon extraction for the Scrivener desktop icon which uses C:/PROG~FBU/SCRI~SJ1/RESO~HNW/icon.ico as icon path.
programs/winemenubuilder/winemenubuilder.c | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/programs/winemenubuilder/winemenubuilder.c b/programs/winemenubuilder/winemenubuilder.c
index a2aa5eef0e4..1579ca8dafa 100644
--- a/programs/winemenubuilder/winemenubuilder.c
+++ b/programs/winemenubuilder/winemenubuilder.c
@@ -1146,16 +1146,25 @@ static WCHAR *extract_icon(LPCWSTR icoPathW, int index, const WCHAR *destFilenam
int numEntries;
HRESULT hr;
WCHAR *nativeIdentifier = NULL;
+ WCHAR fullPathW[MAX_PATH];
+ DWORD len;
WINE_TRACE("path=[%s] index=%d destFilename=[%s]\n", wine_dbgstr_w(icoPathW), index, wine_dbgstr_w(destFilename));
- hr = open_icon(icoPathW, index, bWait, &stream, &pIconDirEntries, &numEntries);
+ len = GetFullPathNameW(icoPathW, MAX_PATH, fullPathW, NULL);
+ if (len == 0 || len > MAX_PATH)
+ {
+ WINE_WARN("GetFullPathName failed\n");
+ return NULL;
+ }
+
+ hr = open_icon(fullPathW, index, bWait, &stream, &pIconDirEntries, &numEntries);
if (FAILED(hr))
{
- WINE_WARN("opening icon %s index %d failed, hr=0x%08lX\n", wine_dbgstr_w(icoPathW), index, hr);
+ WINE_WARN("opening icon %s index %d failed, hr=0x%08lX\n", wine_dbgstr_w(fullPathW), index, hr);
goto end;
}
- hr = platform_write_icon(stream, pIconDirEntries, numEntries, index, icoPathW, destFilename, &nativeIdentifier);
+ hr = platform_write_icon(stream, pIconDirEntries, numEntries, index, fullPathW, destFilename, &nativeIdentifier);
if (FAILED(hr))
WINE_WARN("writing icon failed, error 0x%08lX\n", hr);
--
2.30.0.335.ge6362826a0
March 31, 2022
[PATCH 1/2] winemenubuilder: Search for an executable file when no file extension is provided.
by Sven Baars
Signed-off-by: Sven Baars <sbaars(a)codeweavers.com>
---
This fixes icon extraction for the Scrivener programs menu item which uses C:\\Program Files\\Scrivener\\Scrivener as executable path.
programs/winemenubuilder/winemenubuilder.c | 17 +++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)
diff --git a/programs/winemenubuilder/winemenubuilder.c b/programs/winemenubuilder/winemenubuilder.c
index ab8798a88b5..a2aa5eef0e4 100644
--- a/programs/winemenubuilder/winemenubuilder.c
+++ b/programs/winemenubuilder/winemenubuilder.c
@@ -802,16 +802,25 @@ static HRESULT open_module_icon(LPCWSTR szFileName, int nIndex, IStream **ppStre
GRPICONDIR *pIconDir;
ENUMRESSTRUCT sEnumRes;
HRESULT hr = E_FAIL;
+ WCHAR fullPathW[MAX_PATH];
+ DWORD len;
+
+ len = SearchPathW(NULL, szFileName, L".exe", MAX_PATH, fullPathW, NULL);
+ if (len == 0 || len > MAX_PATH)
+ {
+ WINE_WARN("SearchPath failed\n");
+ return HRESULT_FROM_WIN32(ERROR_NOT_FOUND);
+ }
- hModule = LoadLibraryExW(szFileName, 0, LOAD_LIBRARY_AS_DATAFILE);
+ hModule = LoadLibraryExW(fullPathW, 0, LOAD_LIBRARY_AS_DATAFILE);
if (!hModule)
{
if (GetLastError() == ERROR_BAD_EXE_FORMAT)
- return open_module16_icon(szFileName, nIndex, ppStream);
+ return open_module16_icon(fullPathW, nIndex, ppStream);
else
{
WINE_WARN("LoadLibraryExW (%s) failed, error %ld\n",
- wine_dbgstr_w(szFileName), GetLastError());
+ wine_dbgstr_w(fullPathW), GetLastError());
return HRESULT_FROM_WIN32(GetLastError());
}
}
@@ -820,7 +829,7 @@ static HRESULT open_module_icon(LPCWSTR szFileName, int nIndex, IStream **ppStre
{
hResInfo = FindResourceW(hModule, MAKEINTRESOURCEW(-nIndex), (LPCWSTR)RT_GROUP_ICON);
WINE_TRACE("FindResourceW (%s) called, return %p, error %ld\n",
- wine_dbgstr_w(szFileName), hResInfo, GetLastError());
+ wine_dbgstr_w(fullPathW), hResInfo, GetLastError());
}
else
{
--
2.30.0.335.ge6362826a0
March 31, 2022