wine/dlls/dmloader loader.c
Alexandre Julliard
julliard at wine.codeweavers.com
Tue Nov 8 04:56:13 CST 2005
ChangeSet ID: 21152
CVSROOT: /opt/cvs-commit
Module name: wine
Changes by: julliard at winehq.org 2005/11/08 04:56:13
Modified files:
dlls/dmloader : loader.c
Log message:
Christian Costa <titan.costa at wanadoo.fr>
Add some checks and fix some stream leaks.
Patch: http://cvs.winehq.org/patch.py?id=21152
Old revision New revision Changes Path
1.20 1.21 +40 -10 wine/dlls/dmloader/loader.c
Index: wine/dlls/dmloader/loader.c
diff -u -p wine/dlls/dmloader/loader.c:1.20 wine/dlls/dmloader/loader.c:1.21
--- wine/dlls/dmloader/loader.c:1.20 8 Nov 2005 10:56:13 -0000
+++ wine/dlls/dmloader/loader.c 8 Nov 2005 10:56:13 -0000
@@ -194,15 +194,15 @@ HRESULT WINAPI IDirectMusicLoaderImpl_ID
/* create stream and associate it with file */
result = DMUSIC_CreateDirectMusicLoaderFileStream ((LPVOID*)&pStream);
if (FAILED(result)) {
- ERR(": could not create loader stream\n");
+ ERR(": could not create file stream\n");
return result;
}
result = IDirectMusicLoaderFileStream_Attach (pStream, wszFileName, iface);
if (FAILED(result)) {
- ERR(": could not attach stream to file\n");
+ ERR(": could not attach stream to file\n");
+ IStream_Release (pStream);
return result;
}
-
}
else if (pDesc->dwValidData & DMUS_OBJ_MEMORY) {
/* load object from resource */
@@ -215,7 +215,8 @@ HRESULT WINAPI IDirectMusicLoaderImpl_ID
}
result = IDirectMusicLoaderResourceStream_Attach (pStream, pDesc->pbMemData, pDesc->llMemLength, 0, iface);
if (FAILED(result)) {
- ERR(": could not attach stream to resource\n");
+ ERR(": could not attach stream to resource\n");
+ IStream_Release (pStream);
return result;
}
}
@@ -231,6 +232,7 @@ HRESULT WINAPI IDirectMusicLoaderImpl_ID
result = IDirectMusicLoaderGenericStream_Attach (pStream, pDesc->pStream, iface);
if (FAILED(result)) {
ERR(": failed to attach stream\n");
+ IStream_Release (pStream);
return result;
}
} else {
@@ -323,6 +325,7 @@ HRESULT WINAPI IDirectMusicLoaderImpl_ID
DMUS_OBJECTDESC Desc;
struct list *pEntry;
LPWINE_LOADER_ENTRY pObjectEntry, pNewEntry;
+ HRESULT hr;
TRACE("(%p, %p): pDesc:\n%s\n", This, pDesc, debugstr_DMUS_OBJECTDESC(pDesc));
@@ -344,21 +347,48 @@ HRESULT WINAPI IDirectMusicLoaderImpl_ID
strcpyW(p, pDesc->wszFileName);
}
/* create stream */
- DMUSIC_CreateDirectMusicLoaderFileStream ((LPVOID*)&pStream);
+ hr = DMUSIC_CreateDirectMusicLoaderFileStream ((LPVOID*)&pStream);
+ if (FAILED(hr)) {
+ ERR(": could not create file stream\n");
+ return DMUS_E_LOADER_FAILEDOPEN;
+ }
/* attach stream */
- IDirectMusicLoaderFileStream_Attach (pStream, wszFileName, iface);
+ hr = IDirectMusicLoaderFileStream_Attach (pStream, wszFileName, iface);
+ if (FAILED(hr)) {
+ ERR(": could not attach stream to file\n");
+ IStream_Release (pStream);
+ return DMUS_E_LOADER_FAILEDOPEN;
+ }
}
else if (pDesc->dwValidData & DMUS_OBJ_STREAM) {
/* create stream */
- DMUSIC_CreateDirectMusicLoaderGenericStream ((LPVOID*)&pStream);
+ hr = DMUSIC_CreateDirectMusicLoaderGenericStream ((LPVOID*)&pStream);
+ if (FAILED(hr)) {
+ ERR(": could not create generic stream\n");
+ return DMUS_E_LOADER_FAILEDOPEN;
+ }
/* attach stream */
- IDirectMusicLoaderGenericStream_Attach (pStream, pDesc->pStream, iface);
+ hr = IDirectMusicLoaderGenericStream_Attach (pStream, pDesc->pStream, iface);
+ if (FAILED(hr)) {
+ ERR(": could not attach stream\n");
+ IStream_Release (pStream);
+ return DMUS_E_LOADER_FAILEDOPEN;
+ }
}
else if (pDesc->dwValidData & DMUS_OBJ_MEMORY) {
/* create stream */
- DMUSIC_CreateDirectMusicLoaderResourceStream ((LPVOID*)&pStream);
+ hr = DMUSIC_CreateDirectMusicLoaderResourceStream ((LPVOID*)&pStream);
+ if (FAILED(hr)) {
+ ERR(": could not create resource stream\n");
+ return DMUS_E_LOADER_FAILEDOPEN;
+ }
/* attach stream */
- IDirectMusicLoaderResourceStream_Attach (pStream, pDesc->pbMemData, pDesc->llMemLength, 0, iface);
+ hr = IDirectMusicLoaderResourceStream_Attach (pStream, pDesc->pbMemData, pDesc->llMemLength, 0, iface);
+ if (FAILED(hr)) {
+ ERR(": could not attach stream to resource\n");
+ IStream_Release (pStream);
+ return DMUS_E_LOADER_FAILEDOPEN;
+ }
}
else {
ERR(": no way to get additional info\n");
More information about the wine-cvs
mailing list