[Wine-devel] [Wine-patches] eterbug6846: ole32/tests: Incorrect storage creation

Alexander Morozov amorozov на etersoft.ru
Пт Мар 25 16:02:48 MSK 2011


>  eterbug6846: ole32/tests: Incorrect storage creation
>  выдает ошибку если откатить патч
>  b28eaf6776abe068416bb020856b095f972c149c

+static void test_correct_storage_creation(void)
+{
+    ILockBytes *ilb = NULL;
+    IStorage *stg = NULL;
+    DWORD mode;
+    BYTE *pFileBuffer;
+    HGLOBAL hMem;
+    HRESULT r;
+    static const BYTE StandardMagic[] = {0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1};
+    static const BYTE NullableField[] = 
+{
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};

Это лучше сделать как-то так:
    static const BYTE NullableField[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                                         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};

+    

Надо удалить везде ненежные пробелы в конце строк.

+    /* Test for correct storage creation */
+    /* Memory allocation */
+    mode = GMEM_FIXED;
+    hMem = GlobalAlloc( mode, 1024);

Надо сделать, чтобы либо везде присутствовали пробелы перед/после скобок при вызове функции,
либо везде остутствовали.
То есть либо так:
func( aa, bb );
либо так:
func(aa,bb);
Такого быть не должно:
func( aa,bb);
func(aa,bb );

+    FillMemory(hMem, 1024, 0xff);
+    /* ILockBytes creation */
+    r = CreateILockBytesOnHGlobal(hMem, TRUE, &ilb);
+    ok(r == S_OK, "CreateILockBytesOnHGlobal failed, hr=%08x\n", r);
+    GlobalUnlock(hMem);

GlobalUnlock здесь не нужен. Вообще, я уже обращал на это внимание:
http://lists.etersoft.ru/pipermail/wine-devel/2011-March/000366.html

+    /* Storage creation */
+    mode = STGM_CREATE|STGM_TRANSACTED|STGM_SHARE_EXCLUSIVE|STGM_READWRITE;
+    r = StgCreateDocfileOnILockBytes( ilb, mode, 0, &stg );
+    ok(r == S_OK, "StgCreateDocfileOnILockBytes failed, hr=%08x\n", r);
+    IStorage_Commit(stg, STGC_DEFAULT);
+    IStorage_Release(stg); 
+    GetHGlobalFromILockBytes(ilb, &hMem);
+    pFileBuffer = GlobalLock(hMem);
+todo_wine

Перед todo_wine надо сделать отступы в четыре пробела как везде.

+    ok(!memcmp(pFileBuffer, StandardMagic, 8), "Incorrect storage creation\n");
+todo_wine
+    ok(!memcmp((pFileBuffer+8), NullableField, 16), "Incorrect storage creation. Field is not reset\n");
+todo_wine
+    ok(!memcmp((pFileBuffer+34), NullableField, 10), "Incorrect storage creation. Field is not reset\n");

А здесь надо выполнить GlobalUnlock для hMem.

+    ILockBytes_Release(ilb);
+}


Подробная информация о списке рассылки Wine-devel