Closes #22568: fix UTIME_TO_* macros in posixmodule for rare cases.
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 22770e8..e1e5af9 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -4714,25 +4714,25 @@
     } \
 
 #define UTIME_TO_UTIMBUF \
-    struct utimbuf u[2]; \
+    struct utimbuf u; \
     struct utimbuf *time; \
     if (ut->now) \
         time = NULL; \
     else { \
-        u[0].actime = ut->atime_s; \
-        u[0].modtime = ut->mtime_s; \
-        time = u; \
+        u.actime = ut->atime_s; \
+        u.modtime = ut->mtime_s; \
+        time = &u; \
     }
 
 #define UTIME_TO_TIME_T \
     time_t timet[2]; \
-    struct timet time; \
+    time_t *time; \
     if (ut->now) \
         time = NULL; \
     else { \
         timet[0] = ut->atime_s; \
         timet[1] = ut->mtime_s; \
-        time = &timet; \
+        time = timet; \
     } \