On Fri, Oct 20, 2017 at 09:58:57AM +0800, Dmitry Timoshkov wrote:
v2: Call IPersistStorage_Save() directly instead of OleSave().
Signed-off-by: Dmitry Timoshkov <dmitry(a)baikal.ru> --- dlls/ole32/tests/ole2.c | 402 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 402 insertions(+)
diff --git a/dlls/ole32/tests/ole2.c b/dlls/ole32/tests/ole2.c index 0773bbf189..9ed19f1f9b 100644 --- a/dlls/ole32/tests/ole2.c +++ b/dlls/ole32/tests/ole2.c +static void check_storage_contents(IStorage *stg, const struct storage_def *stg_def, + int *enumerated_streams, int *matched_streams) +{ + HRESULT hr; + IEnumSTATSTG *enumstg; + IStream *stream; + STATSTG stat; + int i, seen_stream[MAX_STREAM] = { 0 }; + + if (winetest_debug > 1) + trace("check_storage_contents:\n=============================================\n"); + + *enumerated_streams = 0; + *matched_streams = 0; + + hr = IStorage_Stat(stg, &stat, STATFLAG_NONAME); + ok(hr == S_OK, "unexpected %#x\n", hr); +todo_wine_if(!IsEqualCLSID(stg_def->clsid, &stat.clsid)) + ok(IsEqualCLSID(stg_def->clsid, &stat.clsid), "expected %s, got %s\n", + wine_dbgstr_guid(stg_def->clsid), wine_dbgstr_guid(&stat.clsid)); + + hr = IStorage_EnumElements(stg, 0, NULL, 0, &enumstg); + ok(hr == S_OK, "unexpected %#x\n", hr); + + for (;;) + { + ULONG bytes; + int clipformat = -1; + PresentationDataHeader header; + char name[32]; + BYTE data[256]; + + memset(&header, 0, sizeof(header)); + + hr = IEnumSTATSTG_Next(enumstg, 1, &stat, NULL); + if(hr == S_FALSE) break; + ok(hr == S_OK, "unexpected %#x\n", hr); + + if (winetest_debug > 1) + trace("name %s, type %u, size %d, clsid %s\n", + wine_dbgstr_w(stat.pwcsName), stat.type, stat.cbSize.u.LowPart, wine_dbgstr_guid(&stat.clsid)); + + ok(stat.type == STGTY_STREAM, "unexpected %#x\n", stat.type); + + WideCharToMultiByte(CP_ACP, 0, stat.pwcsName, -1, name, sizeof(name), NULL, NULL); + + hr = IStorage_OpenStream(stg, stat.pwcsName, NULL, STGM_READ | STGM_SHARE_EXCLUSIVE, 0, &stream); + ok(hr == S_OK, "unexpected %#x\n", hr); + + if (!memcmp(name, "\2OlePres", 7)) + { + clipformat = read_clipformat(stream); + + hr = IStream_Read(stream, &header, sizeof(header), &bytes); + ok(hr == S_OK, "unexpected %#x\n", hr); + ok(bytes >= 24, "read %u bytes, expected to read %u bytes\n", bytes, sizeof(header)); +
You're using sizeof as an argument to a fprintf-like function which, for example, gives a warning on macOS. ole2.c:3532:82: warning: format specifies type 'unsigned int' but the argument has type 'unsigned long' [-Wformat] Also, while you're at it, couldn't that '24' be sizeof(header) instead? Huw.