[PATCH] Ensure 16 byte alignment of data

Adeniyi Mayokun adeniyimayokun17 at gmail.com
Wed Mar 14 00:56:20 CDT 2018


>From 275d93c9ab0f533fa70d698726afc8adaaefb664 Mon Sep 17 00:00:00 2001
From: Adeniyi Mayokun <adeniyimayokun17 at gmail.com>
Date: Wed, 14 Mar 2018 06:50:15 +0100
Subject: [PATCH] Ensure 16 byte alignment of data

Signed-off-by: Adeniyi Mayokun <adeniyimayokun17 at gmail.com@gmail.com>
---
 dlls/ntdll/heap.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/dlls/ntdll/heap.c b/dlls/ntdll/heap.c
index 57d3d544e5..5469b6fc55 100644
--- a/dlls/ntdll/heap.c
+++ b/dlls/ntdll/heap.c
@@ -54,8 +54,9 @@ WINE_DEFAULT_DEBUG_CHANNEL(heap);
 typedef struct tagARENA_INUSE
 {
     DWORD  size;                    /* Block size; must be the first field
*/
-    DWORD  magic : 24;              /* Magic number */
-    DWORD  unused_bytes : 8;        /* Number of bytes in the block not
used by user data (max value is HEAP_MIN_DATA_SIZE+HEAP_MIN_SHRINK_SIZE) */
+    DWORD  magic;                   /* Magic number */
+    DWORD  unused_bytes;            /* Number of bytes in the block not
used by user data (max value is HEAP_MIN_DATA_SIZE+HEAP_MIN_SHRINK_SIZE) */
+    DWORD  padding;
 } ARENA_INUSE;

 typedef struct tagARENA_FREE
@@ -92,9 +93,11 @@ typedef struct

 /* everything is aligned on 64 byte boundaries */
 #define ALIGNMENT              64
+#define HEADER_ALIGNMENT       16
 #define LARGE_ALIGNMENT        16  /* large blocks have stricter alignment
*/

-C_ASSERT( sizeof(ARENA_LARGE) % LARGE_ALIGNMENT == 0 );
+C_ASSERT( sizeof(ARENA_LARGE) % HEADER_ALIGNMENT == 0 );
+C_ASSERT( sizeof(ARENA_INUSE) % HEADER_ALIGNMENT == 0 );

 #define ROUND_SIZE(size)       ((size + ALIGNMENT - 1) & ~(ALIGNMENT - 1))
 #define ROUND_DATA_SIZE(size)  (((size + sizeof(ARENA_INUSE) + ALIGNMENT -
1) \
-- 
2.14.1
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20180314/63cedc0e/attachment.html>


More information about the wine-devel mailing list