test_TCS_OWNERDRAWFIXED in dlls/comctl32/tests/tab ?

Gerald Pfeifer gerald at pfeifer.com
Sat Feb 12 17:16:30 CST 2011

test_TCS_OWNERDRAWFIXED in dlls/comctl32/tests/tab has the following

  LPARAM lparam, lparam2;
  lparam = 0;
  memset(&lparam, 0xde, 4);
  memset(&lparam2, 0xde, sizeof(LPARAM)-1);
  ok(g_drawitem.itemData == lparam || broken(g_drawitem.itemData == lparam2) /* win98 */,
        "got 0x%lx, expected 0x%lx\n", g_drawitem.itemData, lparam);

I have two questions on this.  First, why does the memset use the constant 
4 and not sizeof(LPARAM)?

Second, why initialize lparam with 0 when this is immediately followed by 
a memset covering it's fully size?

Third, lparam2 is partially uninitialized and will have a couple of random 
bits from all I can tell since lparam2 is never initialized and the memset
only covers a portion of it.

I'm wondering, should lparam = 0 just read lparam2 = 0?  Whatever may be 
the case, the current code does not look right.


More information about the wine-devel mailing list