--- python/enum.c~	2022-01-12 10:07:02.151116991 -0600
+++ python/enum.c	2022-01-12 10:14:04.093001534 -0600
@@ -23,6 +23,12 @@
 
 #include "zbarmodule.h"
 
+#if PY_VERSION_HEX < 0x030900A4 && !defined(Py_SET_SIZE)
+static inline void _Py_SET_SIZE(PyVarObject *ob, Py_ssize_t size)
+{ ob->ob_size = size; }
+#define Py_SET_SIZE(ob, size) _Py_SET_SIZE((PyVarObject*)(ob), size)
+#endif
+
 static char enumitem_doc[] = PyDoc_STR(
     "simple enumeration item.\n"
     "\n"
--- python/enum.c~	2022-01-12 10:16:29.670271662 -0600
+++ python/enum.c	2022-01-12 10:52:11.671258442 -0600
@@ -58,7 +58,7 @@
 
     /* we assume the "fast path" for a single-digit ints (see longobject.c) */
     /* this also holds if we get a small_int preallocated long */
-    Py_SIZE(&self->val) = Py_SIZE(longval);
+    Py_SET_SIZE(&self->val, longval);
     self->val.ob_digit[0] = longval->ob_digit[0];
     Py_DECREF(longval);
 #else
@@ -148,7 +148,7 @@
 
     /* we assume the "fast path" for a single-digit ints (see longobject.c) */
     /* this also holds if we get a small_int preallocated long */
-    Py_SIZE(&self->val) = Py_SIZE(longval);
+    Py_SET_SIZE(&self->val, longval);
     self->val.ob_digit[0] = longval->ob_digit[0];
     Py_DECREF(longval);
 
