[7/7] msi: Clone an open stream if possible in cabinet_open_stream.
Hans Leidekker
hans at codeweavers.com
Fri May 6 07:41:14 CDT 2011
Fixes http://bugs.winehq.org/show_bug.cgi?id=26935
---
dlls/msi/media.c | 14 +++++++++-----
1 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/dlls/msi/media.c b/dlls/msi/media.c
index bf0522a..608e84c 100644
--- a/dlls/msi/media.c
+++ b/dlls/msi/media.c
@@ -235,13 +235,17 @@ static INT_PTR CDECL cabinet_open_stream( char *pszFile, int oflag, int pmode )
WARN("failed to encode stream name\n");
return 0;
}
- hr = IStorage_OpenStream( cab->storage, encoded, NULL, STGM_READ|STGM_SHARE_EXCLUSIVE, 0, &stream );
- msi_free( encoded );
- if (FAILED(hr))
+ if (msi_clone_open_stream( package_disk.package->db, cab->storage, encoded, &stream ) != ERROR_SUCCESS)
{
- WARN("failed to open stream 0x%08x\n", hr);
- return 0;
+ hr = IStorage_OpenStream( cab->storage, encoded, NULL, STGM_READ|STGM_SHARE_EXCLUSIVE, 0, &stream );
+ msi_free( encoded );
+ if (FAILED(hr))
+ {
+ WARN("failed to open stream 0x%08x\n", hr);
+ return 0;
+ }
}
+ msi_free( encoded );
return (INT_PTR)stream;
}
--
1.7.4.1
More information about the wine-patches
mailing list