}
static const PyTypeObject keyiter_pytype_skel = {
- PyObject_HEAD_INIT(0) 0, /* Header */
+ PyVarObject_HEAD_INIT(0, 0) /* Header */
"_KeyIter", /* @tp_name@ */
sizeof(iter_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
}
static const PyTypeObject valiter_pytype_skel = {
- PyObject_HEAD_INIT(0) 0, /* Header */
+ PyVarObject_HEAD_INIT(0, 0) /* Header */
"_ValueIter", /* @tp_name@ */
sizeof(iter_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
}
static const PyTypeObject itemiter_pytype_skel = {
- PyObject_HEAD_INIT(0) 0, /* Header */
+ PyVarObject_HEAD_INIT(0, 0) /* Header */
"_ItemIter", /* @tp_name@ */
sizeof(iter_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
# define Py_SIZE(obj) (((PyVarObject *)(obj))->ob_size)
#endif
+/* Python 3 added internal structure to the various object headers, and
+ * defined a new macro `PyVarObject_HEAD_INIT' to initialize variable-length
+ * static instances correctly. Define it if it's not already here.
+ */
+#ifndef PyVarObject_HEAD_INIT
+# define PyVarObject_HEAD_INIT(super, sz) PyObject_HEAD_INIT(super) sz,
+#endif
+
/*----- Utilities for returning values and exceptions ---------------------*/
/* Returning values. */