From a06b606462740058b5d52fefdcdcd679d4f40260 Mon Sep 17 00:00:00 2001
From: Diego Russo <diego.russo@arm.com>
Date: Tue, 30 Jan 2024 23:53:04 +0000
Subject: gh-110190: Fix ctypes structs with array on Windows ARM64 (GH-114753)

---
 Misc/NEWS.d/next/Library/2024-01-30-15-34-08.gh-issue-110190.Z5PQQX.rst | 1 +
 Modules/_ctypes/stgdict.c                                               | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)
 create mode 100644 Misc/NEWS.d/next/Library/2024-01-30-15-34-08.gh-issue-110190.Z5PQQX.rst

diff --git a/Misc/NEWS.d/next/Library/2024-01-30-15-34-08.gh-issue-110190.Z5PQQX.rst b/Misc/NEWS.d/next/Library/2024-01-30-15-34-08.gh-issue-110190.Z5PQQX.rst
new file mode 100644
index 0000000..af77e40
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2024-01-30-15-34-08.gh-issue-110190.Z5PQQX.rst
@@ -0,0 +1 @@
+Fix ctypes structs with array on Windows ARM64 platform by setting ``MAX_STRUCT_SIZE`` to 32 in stgdict. Patch by Diego Russo
diff --git a/Modules/_ctypes/stgdict.c b/Modules/_ctypes/stgdict.c
index 2397015..deafa69 100644
--- a/Modules/_ctypes/stgdict.c
+++ b/Modules/_ctypes/stgdict.c
@@ -707,7 +707,7 @@ PyCStructUnionType_update_stgdict(PyObject *type, PyObject *fields, int isStruct
 /*
  * The value of MAX_STRUCT_SIZE depends on the platform Python is running on.
  */
-#if defined(__aarch64__) || defined(__arm__)
+#if defined(__aarch64__) || defined(__arm__) || defined(_M_ARM64)
 #  define MAX_STRUCT_SIZE 32
 #elif defined(__powerpc64__)
 #  define MAX_STRUCT_SIZE 64
-- 
cgit v0.12