Huw Davies : oleaut32: BSTRs should have 8 byte alignment on 64 bits.
Alexandre Julliard
julliard at wine.codeweavers.com
Thu Jan 21 11:22:05 CST 2016
Module: wine
Branch: master
Commit: 36f454cda0dc1fd5fbd1521ad8d1883be6995375
URL: http://source.winehq.org/git/wine.git/?a=commit;h=36f454cda0dc1fd5fbd1521ad8d1883be6995375
Author: Huw Davies <huw at codeweavers.com>
Date: Thu Jan 21 10:29:50 2016 +0000
oleaut32: BSTRs should have 8 byte alignment on 64 bits.
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/oleaut32/oleaut.c | 3 +++
dlls/oleaut32/tests/vartype.c | 3 +++
2 files changed, 6 insertions(+)
diff --git a/dlls/oleaut32/oleaut.c b/dlls/oleaut32/oleaut.c
index 8a22c2e..07db9ff 100644
--- a/dlls/oleaut32/oleaut.c
+++ b/dlls/oleaut32/oleaut.c
@@ -84,6 +84,9 @@ static CRITICAL_SECTION_DEBUG cs_bstr_cache_dbg =
static CRITICAL_SECTION cs_bstr_cache = { &cs_bstr_cache_dbg, -1, 0, 0, 0, 0 };
typedef struct {
+#ifdef _WIN64
+ DWORD pad;
+#endif
DWORD size;
union {
char ptr[1];
diff --git a/dlls/oleaut32/tests/vartype.c b/dlls/oleaut32/tests/vartype.c
index d905d37..f7df9c5 100644
--- a/dlls/oleaut32/tests/vartype.c
+++ b/dlls/oleaut32/tests/vartype.c
@@ -5398,9 +5398,12 @@ static void test_SysAllocString(void)
if (str)
{
LPINTERNAL_BSTR bstr = Get(str);
+ DWORD_PTR p = (DWORD_PTR)str;
+ int align = sizeof(void *);
ok (bstr->dwLen == 8, "Expected 8, got %d\n", bstr->dwLen);
ok (!lstrcmpW(bstr->szString, szTest), "String different\n");
+ ok ((p & ~(align-1)) == p, "Not aligned to %d\n", align);
SysFreeString(str);
}
}
More information about the wine-cvs
mailing list