Janitorial: Remove redundant NULL pointer checks before
HeapFree'ing them. Some HeapFree's are hidden behind macros.
Found by smatch.
Michael Stefaniuc
mstefani at redhat.de
Tue May 9 17:33:53 CDT 2006
---
dlls/advapi32/registry.c | 8 ++++----
dlls/advapi32/security.c | 4 +---
dlls/avifil32/api.c | 7 ++-----
dlls/avifil32/avifile.c | 3 +--
dlls/avifil32/editstream.c | 3 +--
dlls/ddraw/device_opengl.c | 2 +-
dlls/ddraw/surface_main.c | 2 +-
dlls/iphlpapi/iphlpapi_main.c | 3 +--
dlls/msacm32/internal.c | 2 +-
dlls/mshtml/hlink.c | 3 +--
dlls/msvfw32/msvideo_main.c | 12 ++++--------
dlls/opengl32/wgl.c | 4 +---
dlls/opengl32/wgl_ext.c | 2 +-
dlls/riched20/writer.c | 6 ++----
dlls/secur32/secur32.c | 5 ++---
dlls/secur32/tests/main.c | 9 +++------
dlls/secur32/thunks.c | 12 ++++--------
dlls/urlmon/umon.c | 6 ++----
dlls/wined3d/query.c | 4 +---
dlls/wininet/internet.c | 3 +--
dlls/wininet/urlcache.c | 1 -
dlls/winmm/winealsa/audio.c | 13 ++++---------
dlls/winmm/wineesd/audio.c | 8 ++------
dlls/x11drv/xrender.c | 3 +--
programs/regedit/treeview.c | 3 +--
programs/wineboot/wineboot.c | 3 +--
programs/winecfg/audio.c | 7 ++-----
27 files changed, 46 insertions(+), 92 deletions(-)
f82619d29f5e8a4a223251fcc41dc6854fb0528a
diff --git a/dlls/advapi32/registry.c b/dlls/advapi32/registry.c
index a51e8e9..f748b52 100644
--- a/dlls/advapi32/registry.c
+++ b/dlls/advapi32/registry.c
@@ -1455,7 +1455,7 @@ LONG WINAPI RegGetValueW( HKEY hKey, LPC
(dwType == REG_EXPAND_SZ && !(dwFlags & RRF_NOEXPAND)))
{
do {
- if (pvBuf) HeapFree(GetProcessHeap(), 0, pvBuf);
+ HeapFree(GetProcessHeap(), 0, pvBuf);
pvBuf = HeapAlloc(GetProcessHeap(), 0, cbData);
if (!pvBuf)
@@ -1494,7 +1494,7 @@ LONG WINAPI RegGetValueW( HKEY hKey, LPC
CopyMemory(pvData, pvBuf, *pcbData);
}
- if (pvBuf) HeapFree(GetProcessHeap(), 0, pvBuf);
+ HeapFree(GetProcessHeap(), 0, pvBuf);
}
if (pszSubKey && pszSubKey[0])
@@ -1547,7 +1547,7 @@ LONG WINAPI RegGetValueA( HKEY hKey, LPC
(dwType == REG_EXPAND_SZ && !(dwFlags & RRF_NOEXPAND)))
{
do {
- if (pvBuf) HeapFree(GetProcessHeap(), 0, pvBuf);
+ HeapFree(GetProcessHeap(), 0, pvBuf);
pvBuf = HeapAlloc(GetProcessHeap(), 0, cbData);
if (!pvBuf)
@@ -1586,7 +1586,7 @@ LONG WINAPI RegGetValueA( HKEY hKey, LPC
CopyMemory(pvData, pvBuf, *pcbData);
}
- if (pvBuf) HeapFree(GetProcessHeap(), 0, pvBuf);
+ HeapFree(GetProcessHeap(), 0, pvBuf);
}
if (pszSubKey && pszSubKey[0])
diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c
index f5472a8..f61b38a 100644
--- a/dlls/advapi32/security.c
+++ b/dlls/advapi32/security.c
@@ -1841,9 +1841,7 @@ LookupAccountNameA(
RtlFreeUnicodeString(&lpSystemW);
RtlFreeUnicodeString(&lpAccountW);
-
- if (lpReferencedDomainNameW)
- HeapFree(GetProcessHeap(), 0, lpReferencedDomainNameW);
+ HeapFree(GetProcessHeap(), 0, lpReferencedDomainNameW);
return ret;
}
diff --git a/dlls/avifil32/api.c b/dlls/avifil32/api.c
index 44bdf91..6f9ae03 100644
--- a/dlls/avifil32/api.c
+++ b/dlls/avifil32/api.c
@@ -1284,9 +1284,7 @@ static BOOL AVISaveOptionsFmtChoose(HWND
if (ret == S_OK)
pOptions->dwFlags |= AVICOMPRESSF_VALID;
- if (afmtc.pwfxEnum != NULL)
- HeapFree(GetProcessHeap(), 0, afmtc.pwfxEnum);
-
+ HeapFree(GetProcessHeap(), 0, afmtc.pwfxEnum);
return (ret == S_OK ? TRUE : FALSE);
} else {
ERR(": unknown streamtype 0x%08lX\n", sInfo.fccType);
@@ -2007,8 +2005,7 @@ HRESULT WINAPI AVISaveVW(LPCWSTR szFile,
}
error:
- if (lpBuffer != NULL)
- HeapFree(GetProcessHeap(), 0, lpBuffer);
+ HeapFree(GetProcessHeap(), 0, lpBuffer);
if (pfile != NULL) {
for (curStream = 0; curStream < nStreams; curStream++) {
if (pOutStreams[curStream] != NULL)
diff --git a/dlls/avifil32/avifile.c b/dlls/avifil32/avifile.c
index 8d0625f..7f52ac7 100644
--- a/dlls/avifil32/avifile.c
+++ b/dlls/avifil32/avifile.c
@@ -1964,8 +1964,7 @@ static HRESULT AVIFILE_LoadIndex(IAVIFil
pos, &bAbsolute);
}
- if (lp != NULL)
- HeapFree(GetProcessHeap(), 0, lp);
+ HeapFree(GetProcessHeap(), 0, lp);
/* checking ... */
for (n = 0; n < This->fInfo.dwStreams; n++) {
diff --git a/dlls/avifil32/editstream.c b/dlls/avifil32/editstream.c
index bd654a0..b13ef22 100644
--- a/dlls/avifil32/editstream.c
+++ b/dlls/avifil32/editstream.c
@@ -340,8 +340,7 @@ static BOOL AVIFILE_FormatsEqual(PAVISTR
}
}
- if (fmt2 != NULL)
- HeapFree(GetProcessHeap(), 0, fmt2);
+ HeapFree(GetProcessHeap(), 0, fmt2);
HeapFree(GetProcessHeap(), 0, fmt1);
return status;
diff --git a/dlls/ddraw/device_opengl.c b/dlls/ddraw/device_opengl.c
index e2e6299..dac38d3 100644
--- a/dlls/ddraw/device_opengl.c
+++ b/dlls/ddraw/device_opengl.c
@@ -3821,7 +3821,7 @@ static void d3ddevice_lock_update(IDirec
buffer_color, buffer_format, dst);
if (current_width > buffer_width) {
- if (buffer != NULL) HeapFree(GetProcessHeap(), 0, buffer);
+ HeapFree(GetProcessHeap(), 0, buffer);
buffer_width = current_width;
buffer = HeapAlloc(GetProcessHeap(), 0, buffer_width);
}
diff --git a/dlls/ddraw/surface_main.c b/dlls/ddraw/surface_main.c
index ba11359..9c2eb0b 100644
--- a/dlls/ddraw/surface_main.c
+++ b/dlls/ddraw/surface_main.c
@@ -110,7 +110,7 @@ static void Main_DirectDrawSurface_Destr
}
This->final_release(This);
if (This->private != This+1) HeapFree(GetProcessHeap(), 0, This->private);
- if (This->tex_private) HeapFree(GetProcessHeap(), 0, This->tex_private);
+ HeapFree(GetProcessHeap(), 0, This->tex_private);
HeapFree(GetProcessHeap(), 0, This);
}
diff --git a/dlls/iphlpapi/iphlpapi_main.c b/dlls/iphlpapi/iphlpapi_main.c
index 063e9f7..3d7d5e0 100644
--- a/dlls/iphlpapi/iphlpapi_main.c
+++ b/dlls/iphlpapi/iphlpapi_main.c
@@ -755,8 +755,7 @@ DWORD WINAPI GetAdaptersInfo(PIP_ADAPTER
}
else
ret = ERROR_OUTOFMEMORY;
- if (ipAddrTable)
- HeapFree(GetProcessHeap(), 0, ipAddrTable);
+ HeapFree(GetProcessHeap(), 0, ipAddrTable);
}
}
else
diff --git a/dlls/msacm32/internal.c b/dlls/msacm32/internal.c
index 78ecb14..25a1504 100644
--- a/dlls/msacm32/internal.c
+++ b/dlls/msacm32/internal.c
@@ -635,7 +635,7 @@ static void MSACM_ReorderDriversByPriori
errCleanUp:
if (hPriorityKey != NULL) RegCloseKey(hPriorityKey);
- if (driverList != NULL) HeapFree(MSACM_hHeap, 0, driverList);
+ HeapFree(MSACM_hHeap, 0, driverList);
}
/***********************************************************************
diff --git a/dlls/mshtml/hlink.c b/dlls/mshtml/hlink.c
index 3016917..636ae9e 100644
--- a/dlls/mshtml/hlink.c
+++ b/dlls/mshtml/hlink.c
@@ -211,8 +211,7 @@ static HRESULT WINAPI Hlink_SetMonikerRe
if(This->mon)
IMoniker_Release(This->mon);
- if(This->location)
- HeapFree(GetProcessHeap(), 0, This->location);
+ HeapFree(GetProcessHeap(), 0, This->location);
if(pimkTarget)
IMoniker_AddRef(pimkTarget);
diff --git a/dlls/msvfw32/msvideo_main.c b/dlls/msvfw32/msvideo_main.c
index 647124d..8c89450 100644
--- a/dlls/msvfw32/msvideo_main.c
+++ b/dlls/msvfw32/msvideo_main.c
@@ -1437,14 +1437,10 @@ void VFWAPI ICSeqCompressFrameEnd(PCOMPV
TRACE("(%p)\n", pc);
ret = ICSendMessage(pc->hic, ICM_COMPRESS_END, 0, 0);
TRACE(" -- %lx", ret);
- if (pc->lpbiIn)
- HeapFree(GetProcessHeap(), 0, pc->lpbiIn);
- if (pc->lpBitsPrev)
- HeapFree(GetProcessHeap(), 0, pc->lpBitsPrev);
- if (pc->lpBitsOut)
- HeapFree(GetProcessHeap(), 0, pc->lpBitsOut);
- if (pc->lpState)
- HeapFree(GetProcessHeap(), 0, pc->lpState);
+ HeapFree(GetProcessHeap(), 0, pc->lpbiIn);
+ HeapFree(GetProcessHeap(), 0, pc->lpBitsPrev);
+ HeapFree(GetProcessHeap(), 0, pc->lpBitsOut);
+ HeapFree(GetProcessHeap(), 0, pc->lpState);
pc->lpbiIn = pc->lpBitsPrev = pc->lpBitsOut = pc->lpState = NULL;
}
diff --git a/dlls/opengl32/wgl.c b/dlls/opengl32/wgl.c
index a9d0b27..6411b8c 100644
--- a/dlls/opengl32/wgl.c
+++ b/dlls/opengl32/wgl.c
@@ -1336,9 +1336,7 @@ static void process_detach(void)
/* Do not leak memory... */
wgl_ext_finalize_extensions();
- if (NULL != internal_gl_extensions) {
- HeapFree(GetProcessHeap(), 0, internal_gl_extensions);
- }
+ HeapFree(GetProcessHeap(), 0, internal_gl_extensions);
}
/***********************************************************************
diff --git a/dlls/opengl32/wgl_ext.c b/dlls/opengl32/wgl_ext.c
index 624a82c..f9ad463 100644
--- a/dlls/opengl32/wgl_ext.c
+++ b/dlls/opengl32/wgl_ext.c
@@ -1078,7 +1078,7 @@ HPBUFFERARB WINAPI wglCreatePbufferARB(H
create_failed:
if (NULL != cfgs) XFree(cfgs);
- if (NULL != object) HeapFree(GetProcessHeap(), 0, object);
+ HeapFree(GetProcessHeap(), 0, object);
TRACE("->(FAILED)\n");
return (HPBUFFERARB) NULL;
}
diff --git a/dlls/riched20/writer.c b/dlls/riched20/writer.c
index 9814ad1..8e2976a 100644
--- a/dlls/riched20/writer.c
+++ b/dlls/riched20/writer.c
@@ -782,8 +782,7 @@ ME_StreamOutText(ME_TextEditor *editor,
nSize = WideCharToMultiByte(nCodePage, 0, item->member.run.strText->szData + nStart,
nLen, NULL, 0, NULL, NULL);
if (nSize > nBufLen) {
- if (buffer)
- FREE_OBJ(buffer);
+ FREE_OBJ(buffer);
buffer = ALLOC_N_OBJ(char, nSize);
nBufLen = nSize;
}
@@ -800,8 +799,7 @@ ME_StreamOutText(ME_TextEditor *editor,
item = ME_FindItemFwd(item, diRun);
}
- if (buffer)
- FREE_OBJ(buffer);
+ FREE_OBJ(buffer);
return success;
}
diff --git a/dlls/secur32/secur32.c b/dlls/secur32/secur32.c
index ebe7e2e..664f901 100644
--- a/dlls/secur32/secur32.c
+++ b/dlls/secur32/secur32.c
@@ -666,8 +666,7 @@ static void SECUR32_freeProviders(void)
{
LIST_FOR_EACH_ENTRY(provider, &providerTable->table, SecureProvider, entry)
{
- if (provider->moduleName)
- SECUR32_FREE(provider->moduleName);
+ SECUR32_FREE(provider->moduleName);
if (provider->lib)
FreeLibrary(provider->lib);
}
@@ -689,7 +688,7 @@ static void SECUR32_freeProviders(void)
*/
SECURITY_STATUS WINAPI FreeContextBuffer(PVOID pv)
{
- if (pv) SECUR32_FREE(pv);
+ SECUR32_FREE(pv);
return SEC_E_OK;
}
diff --git a/dlls/secur32/tests/main.c b/dlls/secur32/tests/main.c
index 44d8301..41eb7fa 100644
--- a/dlls/secur32/tests/main.c
+++ b/dlls/secur32/tests/main.c
@@ -162,12 +162,9 @@ SECURITY_STATUS setupClient(PCredHandle
if( identity != NULL)
{
- if(identity->Domain != 0)
- HeapFree(GetProcessHeap(), 0, identity->Domain);
- if(identity->User != 0)
- HeapFree(GetProcessHeap(), 0, identity->User);
- if(identity->Password != 0)
- HeapFree(GetProcessHeap(), 0, identity->Password);
+ HeapFree(GetProcessHeap(), 0, identity->Domain);
+ HeapFree(GetProcessHeap(), 0, identity->User);
+ HeapFree(GetProcessHeap(), 0, identity->Password);
HeapFree(GetProcessHeap(), 0, identity);
}
diff --git a/dlls/secur32/thunks.c b/dlls/secur32/thunks.c
index 4bcd7bd..c0d1293 100644
--- a/dlls/secur32/thunks.c
+++ b/dlls/secur32/thunks.c
@@ -77,10 +77,8 @@ SECURITY_STATUS SEC_ENTRY thunk_AcquireC
ret = AcquireCredentialsHandleA(principal, package, fCredentialsUse,
pvLogonID, pAuthData, pGetKeyFn, pvGetKeyArgument, phCredential,
ptsExpiry);
- if (principal)
- SECUR32_FREE(principal);
- if (package)
- SECUR32_FREE(package);
+ SECUR32_FREE(principal);
+ SECUR32_FREE(package);
}
else
ret = SEC_E_SECPKG_NOT_FOUND;
@@ -262,8 +260,7 @@ SECURITY_STATUS SEC_ENTRY thunk_Initiali
phCredential, phContext, target, fContextReq, Reserved1,
TargetDataRep, pInput, Reserved2, phNewContext, pOutput,
pfContextAttr, ptsExpiry);
- if (target)
- SECUR32_FREE(target);
+ SECUR32_FREE(target);
}
else
ret = SEC_E_UNSUPPORTED_FUNCTION;
@@ -898,7 +895,6 @@ SECURITY_STATUS SEC_ENTRY thunk_ImportSe
TRACE("%s %p %p %p\n", debugstr_w(pszPackage), pPackedContext, Token,
phContext);
ret = ImportSecurityContextA(package, pPackedContext, Token, phContext);
- if (package)
- SECUR32_FREE(package);
+ SECUR32_FREE(package);
return ret;
}
diff --git a/dlls/urlmon/umon.c b/dlls/urlmon/umon.c
index 79f30b7..9c64e9a 100644
--- a/dlls/urlmon/umon.c
+++ b/dlls/urlmon/umon.c
@@ -737,10 +737,8 @@ static HRESULT URLMonikerImpl_BindToStor
Binding_CloseCacheDownload(bind);
Binding_FinishedDownload(bind, hres);
- if (user)
- HeapFree(GetProcessHeap(), 0, user);
- if (pass)
- HeapFree(GetProcessHeap(), 0, pass);
+ HeapFree(GetProcessHeap(), 0, user);
+ HeapFree(GetProcessHeap(), 0, pass);
HeapFree(GetProcessHeap(), 0, path);
HeapFree(GetProcessHeap(), 0, host);
HeapFree(GetProcessHeap(), 0, urlcopy);
diff --git a/dlls/wined3d/query.c b/dlls/wined3d/query.c
index 3b0c312..3628d4b 100644
--- a/dlls/wined3d/query.c
+++ b/dlls/wined3d/query.c
@@ -60,9 +60,7 @@ ULONG WINAPI IWineD3DQueryImpl_Release(I
TRACE("(%p) : Releasing from %ld\n", This, This->ref);
ref = InterlockedDecrement(&This->ref);
if (ref == 0) {
- if(This->extendedData != NULL){
- HeapFree(GetProcessHeap(), 0, This->extendedData);
- }
+ HeapFree(GetProcessHeap(), 0, This->extendedData);
HeapFree(GetProcessHeap(), 0, This);
}
return ref;
diff --git a/dlls/wininet/internet.c b/dlls/wininet/internet.c
index 8c2f08e..7642625 100644
--- a/dlls/wininet/internet.c
+++ b/dlls/wininet/internet.c
@@ -1533,8 +1533,7 @@ BOOL WINAPI InternetCrackUrlW(LPCWSTR lp
debugstr_wn(lpUC->lpszUrlPath,lpUC->dwUrlPathLength),
debugstr_wn(lpUC->lpszExtraInfo,lpUC->dwExtraInfoLength));
- if (lpszUrl_decode)
- HeapFree(GetProcessHeap(), 0, lpszUrl_decode );
+ HeapFree(GetProcessHeap(), 0, lpszUrl_decode );
return TRUE;
}
diff --git a/dlls/wininet/urlcache.c b/dlls/wininet/urlcache.c
index 3557ea5..56b5c8d 100644
--- a/dlls/wininet/urlcache.c
+++ b/dlls/wininet/urlcache.c
@@ -2280,7 +2280,6 @@ BOOL WINAPI CommitUrlCacheEntryA(
{
dwError = GetLastError();
}
- if (original_url)
HeapFree(GetProcessHeap(), 0, original_url);
}
else
diff --git a/dlls/winmm/winealsa/audio.c b/dlls/winmm/winealsa/audio.c
index e422fba..67f4bd2 100644
--- a/dlls/winmm/winealsa/audio.c
+++ b/dlls/winmm/winealsa/audio.c
@@ -1041,12 +1041,10 @@ static int ALSA_AddCommonDevice(snd_ctl_
*/
static void ALSA_FreeDevice(WINE_WAVEDEV *ww)
{
- if (ww->pcmname)
- HeapFree(GetProcessHeap(), 0, ww->pcmname);
+ HeapFree(GetProcessHeap(), 0, ww->pcmname);
ww->pcmname = NULL;
- if (ww->ctlname)
- HeapFree(GetProcessHeap(), 0, ww->ctlname);
+ HeapFree(GetProcessHeap(), 0, ww->ctlname);
ww->ctlname = NULL;
}
@@ -1627,11 +1625,8 @@ LONG ALSA_WaveInit(void)
ALSA_AddUserSpecifiedDevice(ctl_name, pcm_name);
}
- if (ctl_name)
- HeapFree(GetProcessHeap(), 0, ctl_name);
-
- if (pcm_name)
- HeapFree(GetProcessHeap(), 0, pcm_name);
+ HeapFree(GetProcessHeap(), 0, ctl_name);
+ HeapFree(GetProcessHeap(), 0, pcm_name);
}
if (key)
diff --git a/dlls/winmm/wineesd/audio.c b/dlls/winmm/wineesd/audio.c
index 6bb035b..4426da4 100644
--- a/dlls/winmm/wineesd/audio.c
+++ b/dlls/winmm/wineesd/audio.c
@@ -389,12 +389,8 @@ void ESD_CloseWaveOutDevice(WINE_WAVEOU
wwo->esd_fd = -1;
/* free up the buffer we use for volume and reset the size */
- if(wwo->sound_buffer)
- {
- HeapFree(GetProcessHeap(), 0, wwo->sound_buffer);
- wwo->sound_buffer = NULL;
- }
-
+ HeapFree(GetProcessHeap(), 0, wwo->sound_buffer);
+ wwo->sound_buffer = NULL;
wwo->buffer_size = 0;
}
diff --git a/dlls/x11drv/xrender.c b/dlls/x11drv/xrender.c
index 2068e5b..2d0100b 100644
--- a/dlls/x11drv/xrender.c
+++ b/dlls/x11drv/xrender.c
@@ -344,8 +344,7 @@ static void FreeEntry(int entry)
formatEntry->realized = NULL;
if(formatEntry->bitmaps) {
for(i = 0; i < formatEntry->nrealized; i++)
- if(formatEntry->bitmaps[i])
- HeapFree(GetProcessHeap(), 0, formatEntry->bitmaps[i]);
+ HeapFree(GetProcessHeap(), 0, formatEntry->bitmaps[i]);
HeapFree(GetProcessHeap(), 0, formatEntry->bitmaps);
formatEntry->bitmaps = NULL;
HeapFree(GetProcessHeap(), 0, formatEntry->gis);
diff --git a/programs/regedit/treeview.c b/programs/regedit/treeview.c
index db31c94..72cd5e2 100644
--- a/programs/regedit/treeview.c
+++ b/programs/regedit/treeview.c
@@ -628,8 +628,7 @@ done:
SendMessage(hwndTV, WM_SETREDRAW, TRUE, 0);
SetCursor(hcursorOld);
expanding = FALSE;
- if (keyPath)
- HeapFree(GetProcessHeap(), 0, keyPath);
+ HeapFree(GetProcessHeap(), 0, keyPath);
return TRUE;
}
diff --git a/programs/wineboot/wineboot.c b/programs/wineboot/wineboot.c
index 4e9270e..c962639 100644
--- a/programs/wineboot/wineboot.c
+++ b/programs/wineboot/wineboot.c
@@ -326,8 +326,7 @@ static BOOL pendingRename(void)
res=TRUE;
end:
- if( buffer!=NULL )
- HeapFree(GetProcessHeap(), 0, buffer);
+ HeapFree(GetProcessHeap(), 0, buffer);
if( hSession!=NULL )
RegCloseKey( hSession );
diff --git a/programs/winecfg/audio.c b/programs/winecfg/audio.c
index fa1e5fa..fede02d 100644
--- a/programs/winecfg/audio.c
+++ b/programs/winecfg/audio.c
@@ -480,11 +480,8 @@ static void findAudioDrivers(void)
HCURSOR old_cursor;
/* delete an existing list */
- if (loadedAudioDrv)
- {
- HeapFree(GetProcessHeap(), 0, loadedAudioDrv);
- loadedAudioDrv = 0;
- }
+ HeapFree(GetProcessHeap(), 0, loadedAudioDrv);
+ loadedAudioDrv = 0;
/* change to the wait cursor because this can take a while if there is a
* misbehaving driver that takes a long time to open
--
1.3.2
--
Michael Stefaniuc Tel.: +49-711-96437-199
Sr. Network Engineer Fax.: +49-711-96437-111
Red Hat GmbH Email: mstefani at redhat.com
Hauptstaetterstr. 58 http://www.redhat.de/
D-70178 Stuttgart
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://www.winehq.org/pipermail/wine-patches/attachments/20060510/0d384065/attachment-0001.pgp
More information about the wine-patches
mailing list