[2/3] ole32/tests: Add a test for IOleCache storage contents created by IPersistStorage_Save(). (v2)

Huw Davies huw at codeweavers.com
Fri Oct 20 03:19:15 CDT 2017


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 at 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.



More information about the wine-devel mailing list