From 0d8cc7bb180468fee72330f40d87f6e9db7b42c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michel=20D=C3=A4nzer?= Date: Mon, 23 Sep 2019 18:35:41 +0200 Subject: [PATCH] miext/sync: Make struct _SyncObject::initialized fully ABI compatible With a 32-bit build, putting the initialized field at the end of the struct bumped the struct size from 20 bytes to 24, changing the layout of other structs embedding struct _SyncObject. While this would be acceptable on master, it caused crashes with 1.20. Making the initialized field a char and putting it in the hole before the beingDestroyed field restores the 32-bit ABI as well. Fixes https://gitlab.freedesktop.org/xorg/xserver/issues/892 Reviewed-by: Aaron Plattner Reviewed-by: Alex Goins --- miext/sync/misyncstr.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/miext/sync/misyncstr.h b/miext/sync/misyncstr.h index ea48a4519..6f89714d6 100644 --- a/miext/sync/misyncstr.h +++ b/miext/sync/misyncstr.h @@ -43,8 +43,8 @@ struct _SyncObject { struct _SyncTriggerList *pTriglist; /* list of triggers */ XID id; /* resource ID */ unsigned char type; /* SYNC_* */ + unsigned char initialized; /* FALSE if created but not initialized */ Bool beingDestroyed; /* in process of going away */ - Bool initialized; /* FALSE if created but not initialized */ }; typedef struct _SyncCounter {