Ilya Basin : include: Fix packing bug in shlobj.h. pragma pack 8 for ITEMSPACING, CSFV, SFV_CREATE.
Alexandre Julliard
julliard at winehq.org
Mon Jun 28 11:01:16 CDT 2010
Module: wine
Branch: master
Commit: fcba27239169267febb3b76de5de40b7f8109d2b
URL: http://source.winehq.org/git/wine.git/?a=commit;h=fcba27239169267febb3b76de5de40b7f8109d2b
Author: Ilya Basin <basinilya at 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
More information about the wine-cvs
mailing list