Module: wine Branch: master Commit: fcba27239169267febb3b76de5de40b7f8109d2b URL: http://source.winehq.org/git/wine.git/?a=commit;h=fcba27239169267febb3b76de5...
Author: Ilya Basin basinilya@gmail.com Date: Sat Jun 26 17:37:48 2010 +0400
include: Fix packing bug in shlobj.h. pragma pack 8 for ITEMSPACING, CSFV, SFV_CREATE.
---
dlls/shell32/tests/generated.c | 116 +++++++++++++++++++++++++++++++++------- include/shlobj.h | 12 ++++ tools/winapi/tests.dat | 2 + 3 files changed, 111 insertions(+), 19 deletions(-)
diff --git a/dlls/shell32/tests/generated.c b/dlls/shell32/tests/generated.c index e3f0633..ace877e 100644 --- a/dlls/shell32/tests/generated.c +++ b/dlls/shell32/tests/generated.c @@ -1386,25 +1386,25 @@ static void test_pack_CIDA(void)
static void test_pack_CSFV(void) { - /* CSFV (pack 1) */ + /* CSFV (pack 8) */ TEST_FIELD_SIZE (CSFV, cbSize, 4) - TEST_FIELD_ALIGN (CSFV, cbSize, 1) + TEST_FIELD_ALIGN (CSFV, cbSize, 4) TEST_FIELD_OFFSET(CSFV, cbSize, 0) TEST_FIELD_SIZE (CSFV, pshf, 8) - TEST_FIELD_ALIGN (CSFV, pshf, 1) - TEST_FIELD_OFFSET(CSFV, pshf, 4) + TEST_FIELD_ALIGN (CSFV, pshf, 8) + TEST_FIELD_OFFSET(CSFV, pshf, 8) TEST_FIELD_SIZE (CSFV, psvOuter, 8) - TEST_FIELD_ALIGN (CSFV, psvOuter, 1) - TEST_FIELD_OFFSET(CSFV, psvOuter, 12) + TEST_FIELD_ALIGN (CSFV, psvOuter, 8) + TEST_FIELD_OFFSET(CSFV, psvOuter, 16) TEST_FIELD_SIZE (CSFV, pidl, 8) - TEST_FIELD_ALIGN (CSFV, pidl, 1) - TEST_FIELD_OFFSET(CSFV, pidl, 20) + TEST_FIELD_ALIGN (CSFV, pidl, 8) + TEST_FIELD_OFFSET(CSFV, pidl, 24) TEST_FIELD_SIZE (CSFV, lEvents, 4) - TEST_FIELD_ALIGN (CSFV, lEvents, 1) - TEST_FIELD_OFFSET(CSFV, lEvents, 28) + TEST_FIELD_ALIGN (CSFV, lEvents, 4) + TEST_FIELD_OFFSET(CSFV, lEvents, 32) TEST_FIELD_SIZE (CSFV, pfnCallback, 8) - TEST_FIELD_ALIGN (CSFV, pfnCallback, 1) - TEST_FIELD_OFFSET(CSFV, pfnCallback, 32) + TEST_FIELD_ALIGN (CSFV, pfnCallback, 8) + TEST_FIELD_OFFSET(CSFV, pfnCallback, 40) }
static void test_pack_DROPFILES(void) @@ -1532,6 +1532,25 @@ static void test_pack_FILEGROUPDESCRIPTORW(void) TEST_FIELD_OFFSET(FILEGROUPDESCRIPTORW, fgd, 4) }
+static void test_pack_ITEMSPACING(void) +{ + /* ITEMSPACING (pack 8) */ + TEST_TYPE_SIZE (ITEMSPACING, 16) + TEST_TYPE_ALIGN (ITEMSPACING, 4) + TEST_FIELD_SIZE (ITEMSPACING, cxSmall, 4) + TEST_FIELD_ALIGN (ITEMSPACING, cxSmall, 4) + TEST_FIELD_OFFSET(ITEMSPACING, cxSmall, 0) + TEST_FIELD_SIZE (ITEMSPACING, cySmall, 4) + TEST_FIELD_ALIGN (ITEMSPACING, cySmall, 4) + TEST_FIELD_OFFSET(ITEMSPACING, cySmall, 4) + TEST_FIELD_SIZE (ITEMSPACING, cxLarge, 4) + TEST_FIELD_ALIGN (ITEMSPACING, cxLarge, 4) + TEST_FIELD_OFFSET(ITEMSPACING, cxLarge, 8) + TEST_FIELD_SIZE (ITEMSPACING, cyLarge, 4) + TEST_FIELD_ALIGN (ITEMSPACING, cyLarge, 4) + TEST_FIELD_OFFSET(ITEMSPACING, cyLarge, 12) +} + static void test_pack_LPBROWSEINFOA(void) { /* LPBROWSEINFOA */ @@ -1756,6 +1775,25 @@ static void test_pack_QCMINFO_IDMAP_PLACEMENT(void) TEST_FIELD_OFFSET(QCMINFO_IDMAP_PLACEMENT, fFlags, 4) }
+static void test_pack_SFV_CREATE(void) +{ + /* SFV_CREATE (pack 8) */ + TEST_TYPE_SIZE (SFV_CREATE, 32) + TEST_TYPE_ALIGN (SFV_CREATE, 8) + TEST_FIELD_SIZE (SFV_CREATE, cbSize, 4) + TEST_FIELD_ALIGN (SFV_CREATE, cbSize, 4) + TEST_FIELD_OFFSET(SFV_CREATE, cbSize, 0) + TEST_FIELD_SIZE (SFV_CREATE, pshf, 8) + TEST_FIELD_ALIGN (SFV_CREATE, pshf, 8) + TEST_FIELD_OFFSET(SFV_CREATE, pshf, 8) + TEST_FIELD_SIZE (SFV_CREATE, psvOuter, 8) + TEST_FIELD_ALIGN (SFV_CREATE, psvOuter, 8) + TEST_FIELD_OFFSET(SFV_CREATE, psvOuter, 16) + TEST_FIELD_SIZE (SFV_CREATE, psfvcb, 8) + TEST_FIELD_ALIGN (SFV_CREATE, psfvcb, 8) + TEST_FIELD_OFFSET(SFV_CREATE, psfvcb, 24) +} + static void test_pack_SHChangeDWORDAsIDList(void) { /* SHChangeDWORDAsIDList (pack 1) */ @@ -3166,24 +3204,24 @@ static void test_pack_CIDA(void)
static void test_pack_CSFV(void) { - /* CSFV (pack 1) */ + /* CSFV (pack 8) */ TEST_FIELD_SIZE (CSFV, cbSize, 4) - TEST_FIELD_ALIGN (CSFV, cbSize, 1) + TEST_FIELD_ALIGN (CSFV, cbSize, 4) TEST_FIELD_OFFSET(CSFV, cbSize, 0) TEST_FIELD_SIZE (CSFV, pshf, 4) - TEST_FIELD_ALIGN (CSFV, pshf, 1) + TEST_FIELD_ALIGN (CSFV, pshf, 4) TEST_FIELD_OFFSET(CSFV, pshf, 4) TEST_FIELD_SIZE (CSFV, psvOuter, 4) - TEST_FIELD_ALIGN (CSFV, psvOuter, 1) + TEST_FIELD_ALIGN (CSFV, psvOuter, 4) TEST_FIELD_OFFSET(CSFV, psvOuter, 8) TEST_FIELD_SIZE (CSFV, pidl, 4) - TEST_FIELD_ALIGN (CSFV, pidl, 1) + TEST_FIELD_ALIGN (CSFV, pidl, 4) TEST_FIELD_OFFSET(CSFV, pidl, 12) TEST_FIELD_SIZE (CSFV, lEvents, 4) - TEST_FIELD_ALIGN (CSFV, lEvents, 1) + TEST_FIELD_ALIGN (CSFV, lEvents, 4) TEST_FIELD_OFFSET(CSFV, lEvents, 16) TEST_FIELD_SIZE (CSFV, pfnCallback, 4) - TEST_FIELD_ALIGN (CSFV, pfnCallback, 1) + TEST_FIELD_ALIGN (CSFV, pfnCallback, 4) TEST_FIELD_OFFSET(CSFV, pfnCallback, 20) }
@@ -3312,6 +3350,25 @@ static void test_pack_FILEGROUPDESCRIPTORW(void) TEST_FIELD_OFFSET(FILEGROUPDESCRIPTORW, fgd, 4) }
+static void test_pack_ITEMSPACING(void) +{ + /* ITEMSPACING (pack 8) */ + TEST_TYPE_SIZE (ITEMSPACING, 16) + TEST_TYPE_ALIGN (ITEMSPACING, 4) + TEST_FIELD_SIZE (ITEMSPACING, cxSmall, 4) + TEST_FIELD_ALIGN (ITEMSPACING, cxSmall, 4) + TEST_FIELD_OFFSET(ITEMSPACING, cxSmall, 0) + TEST_FIELD_SIZE (ITEMSPACING, cySmall, 4) + TEST_FIELD_ALIGN (ITEMSPACING, cySmall, 4) + TEST_FIELD_OFFSET(ITEMSPACING, cySmall, 4) + TEST_FIELD_SIZE (ITEMSPACING, cxLarge, 4) + TEST_FIELD_ALIGN (ITEMSPACING, cxLarge, 4) + TEST_FIELD_OFFSET(ITEMSPACING, cxLarge, 8) + TEST_FIELD_SIZE (ITEMSPACING, cyLarge, 4) + TEST_FIELD_ALIGN (ITEMSPACING, cyLarge, 4) + TEST_FIELD_OFFSET(ITEMSPACING, cyLarge, 12) +} + static void test_pack_LPBROWSEINFOA(void) { /* LPBROWSEINFOA */ @@ -3536,6 +3593,25 @@ static void test_pack_QCMINFO_IDMAP_PLACEMENT(void) TEST_FIELD_OFFSET(QCMINFO_IDMAP_PLACEMENT, fFlags, 4) }
+static void test_pack_SFV_CREATE(void) +{ + /* SFV_CREATE (pack 8) */ + TEST_TYPE_SIZE (SFV_CREATE, 16) + TEST_TYPE_ALIGN (SFV_CREATE, 4) + TEST_FIELD_SIZE (SFV_CREATE, cbSize, 4) + TEST_FIELD_ALIGN (SFV_CREATE, cbSize, 4) + TEST_FIELD_OFFSET(SFV_CREATE, cbSize, 0) + TEST_FIELD_SIZE (SFV_CREATE, pshf, 4) + TEST_FIELD_ALIGN (SFV_CREATE, pshf, 4) + TEST_FIELD_OFFSET(SFV_CREATE, pshf, 4) + TEST_FIELD_SIZE (SFV_CREATE, psvOuter, 4) + TEST_FIELD_ALIGN (SFV_CREATE, psvOuter, 4) + TEST_FIELD_OFFSET(SFV_CREATE, psvOuter, 8) + TEST_FIELD_SIZE (SFV_CREATE, psfvcb, 4) + TEST_FIELD_ALIGN (SFV_CREATE, psfvcb, 4) + TEST_FIELD_OFFSET(SFV_CREATE, psfvcb, 12) +} + static void test_pack_SHChangeDWORDAsIDList(void) { /* SHChangeDWORDAsIDList (pack 1) */ @@ -3682,6 +3758,7 @@ static void test_pack(void) test_pack_HYPER_SIZEDARR(); test_pack_IID(); test_pack_ITEMIDLIST(); + test_pack_ITEMSPACING(); test_pack_LPBLOB(); test_pack_LPBROWSEINFOA(); test_pack_LPBROWSEINFOW(); @@ -3740,6 +3817,7 @@ static void test_pack(void) test_pack_RemHMETAFILEPICT(); test_pack_RemHPALETTE(); test_pack_SCODE(); + test_pack_SFV_CREATE(); test_pack_SHChangeDWORDAsIDList(); test_pack_SHChangeNotifyEntry(); test_pack_SHChangeProductKeyAsIDList(); diff --git a/include/shlobj.h b/include/shlobj.h index df1fc93..dbf8518 100644 --- a/include/shlobj.h +++ b/include/shlobj.h @@ -542,6 +542,8 @@ DECLARE_INTERFACE_(IShellFolderViewCB,IUnknown) * IShellFolderView interface */
+#include <pshpack8.h> + typedef struct _ITEMSPACING { int cxSmall; @@ -550,6 +552,8 @@ typedef struct _ITEMSPACING int cyLarge; } ITEMSPACING;
+#include <poppack.h> + #define INTERFACE IShellFolderView DEFINE_GUID(IID_IShellFolderView,0x37a378c0,0xf82d,0x11ce,0xae,0x65,0x08,0x00,0x2b,0x2e,0x12,0x62); DECLARE_INTERFACE_(IShellFolderView, IUnknown) @@ -779,6 +783,8 @@ typedef HRESULT (CALLBACK *LPFNVIEWCALLBACK)( WPARAM wParam, LPARAM lParam);
+#include <pshpack8.h> + typedef struct _CSFV { UINT cbSize; @@ -790,6 +796,8 @@ typedef struct _CSFV FOLDERVIEWMODE fvm; } CSFV, *LPCSFV;
+#include <poppack.h> + HRESULT WINAPI SHCreateShellFolderViewEx(LPCSFV pshfvi, IShellView **ppshv);
/* SHCreateShellFolderViewEx callback messages */ @@ -850,6 +858,8 @@ HRESULT WINAPI SHCreateShellFolderViewEx(LPCSFV pshfvi, IShellView **ppshv); #define SFVM_GET_WEBVIEW_THEME 86 /* undocumented */ #define SFVM_GETDEFERREDVIEWSETTINGS 92 /* undocumented */
+#include <pshpack8.h> + typedef struct _SFV_CREATE { UINT cbSize; @@ -858,6 +868,8 @@ typedef struct _SFV_CREATE IShellFolderViewCB *psfvcb; } SFV_CREATE;
+#include <poppack.h> + HRESULT WINAPI SHCreateShellFolderView(const SFV_CREATE *pscfv, IShellView **ppsv);
/* Types and definitions for the SFM_* parameters */ diff --git a/tools/winapi/tests.dat b/tools/winapi/tests.dat index 90b490a..ec5e702 100644 --- a/tools/winapi/tests.dat +++ b/tools/winapi/tests.dat @@ -1108,6 +1108,7 @@ IID IShellChangeNotify IShellIcon ITEMIDLIST +ITEMSPACING LPBLOB LPBROWSEINFOA LPBROWSEINFOW @@ -1167,6 +1168,7 @@ RemHGLOBAL RemHMETAFILEPICT RemHPALETTE SCODE +SFV_CREATE SHChangeDWORDAsIDList SHChangeNotifyEntry SHChangeProductKeyAsIDList