Alex Villacís Lasso : oleaut32: Fix tests for redundant headers in OLEPicture load from IStream.
Alexandre Julliard
julliard at wine.codeweavers.com
Sun Dec 24 09:38:01 CST 2006
Module: wine
Branch: master
Commit: 8b95d95eb8f854f7126af1b6b2474f65e738ccb1
URL: http://source.winehq.org/git/wine.git/?a=commit;h=8b95d95eb8f854f7126af1b6b2474f65e738ccb1
Author: Alex Villacís Lasso <a_villacis at palosanto.com>
Date: Sat Dec 23 22:02:33 2006 -0500
oleaut32: Fix tests for redundant headers in OLEPicture load from IStream.
---
dlls/oleaut32/tests/olepicture.c | 54 +++++++++++++++++++-------------------
1 files changed, 27 insertions(+), 27 deletions(-)
diff --git a/dlls/oleaut32/tests/olepicture.c b/dlls/oleaut32/tests/olepicture.c
index 8e653ce..64f225b 100644
--- a/dlls/oleaut32/tests/olepicture.c
+++ b/dlls/oleaut32/tests/olepicture.c
@@ -191,12 +191,13 @@ test_pic(const unsigned char *imgdata, u
LARGE_INTEGER seekto;
ULARGE_INTEGER newpos1;
DWORD * header;
- unsigned int i;
+ unsigned int i,j;
/* Let the fun begin */
hglob = GlobalAlloc (0, imgsize);
data = GlobalLock (hglob);
memcpy(data, imgdata, imgsize);
+ GlobalUnlock(hglob); data = NULL;
hres = CreateStreamOnHGlobal (hglob, FALSE, &stream);
ok (hres == S_OK, "createstreamonhglobal failed? doubt it... hres 0x%08x\n", hres);
@@ -210,34 +211,29 @@ test_pic(const unsigned char *imgdata, u
/* again with Non Statable and Non Seekable stream */
stream = (LPSTREAM)NoStatStreamImpl_Construct(hglob);
+ hglob = 0; /* Non-statable impl always deletes on release */
test_pic_with_stream(stream, 0);
IStream_Release(stream);
-
- /* free memory */
- GlobalUnlock(hglob);
- GlobalFree(hglob);
-
- /* more fun!!! */
- hglob = GlobalAlloc (0, imgsize + 8 * (2 * sizeof(DWORD)));
- data = GlobalLock (hglob);
- header = (DWORD *)data;
-
- /* multiple copies of header */
- memcpy(data,"lt\0\0",4);
- header[1] = imgsize;
- memcpy(&(header[2]), header, 2 * sizeof(DWORD));
- memcpy(&(header[4]), header, 4 * sizeof(DWORD));
- memcpy(&(header[8]), header, 8 * sizeof(DWORD));
-
- memcpy(data + 8 * (2 * sizeof(DWORD)), imgdata, imgsize);
-
for (i = 1; i <= 8; i++) {
+ /* more fun!!! */
+ hglob = GlobalAlloc (0, imgsize + i * (2 * sizeof(DWORD)));
+ data = GlobalLock (hglob);
+ header = (DWORD *)data;
+
+ /* multiple copies of header */
+ memcpy(data,"lt\0\0",4);
+ header[1] = imgsize;
+ for (j = 2; j <= i; j++) {
+ memcpy(&(header[2 * (j - 1)]), header, 2 * sizeof(DWORD));
+ }
+ memcpy(data + i * (2 * sizeof(DWORD)), imgdata, imgsize);
+ GlobalUnlock(hglob); data = NULL;
+
hres = CreateStreamOnHGlobal (hglob, FALSE, &stream);
ok (hres == S_OK, "createstreamonhglobal failed? doubt it... hres 0x%08x\n", hres);
memset(&seekto,0,sizeof(seekto));
- seekto.u.LowPart = (8 - i) * (2 * sizeof(DWORD));
hres = IStream_Seek(stream,seekto,SEEK_CUR,&newpos1);
ok (hres == S_OK, "istream seek failed? doubt it... hres 0x%08x\n", hres);
test_pic_with_stream(stream, imgsize);
@@ -246,14 +242,11 @@ test_pic(const unsigned char *imgdata, u
/* again with Non Statable and Non Seekable stream */
stream = (LPSTREAM)NoStatStreamImpl_Construct(hglob);
+ hglob = 0; /* Non-statable impl always deletes on release */
test_pic_with_stream(stream, 0);
- IStream_Release(stream);
+ IStream_Release(stream);
}
-
- /* free memory */
- GlobalUnlock(hglob);
- GlobalFree(hglob);
}
static void test_empty_image(void) {
@@ -670,6 +663,13 @@ static HRESULT WINAPI NoStatStreamImpl_C
}
static const IStreamVtbl NoStatStreamImpl_Vtbl;
+/*
+ Build an object that implements IStream, without IStream_Stat capabilities.
+ Receives a memory handle with data buffer. If memory handle is non-null,
+ it is assumed to be unlocked, otherwise an internal memory handle is allocated.
+ In any case the object takes ownership of memory handle and will free it on
+ object release.
+ */
static NoStatStreamImpl* NoStatStreamImpl_Construct(HGLOBAL hGlobal)
{
NoStatStreamImpl* newStream;
@@ -678,7 +678,7 @@ static NoStatStreamImpl* NoStatStreamImp
if (newStream!=0)
{
newStream->lpVtbl = &NoStatStreamImpl_Vtbl;
- newStream->ref = 0;
+ newStream->ref = 1;
newStream->supportHandle = hGlobal;
if (!newStream->supportHandle)
More information about the wine-cvs
mailing list