diff --git a/include/pybind11/attr.h b/include/pybind11/attr.h index b4486dc0f1..d337595a0b 100644 --- a/include/pybind11/attr.h +++ b/include/pybind11/attr.h @@ -378,7 +378,7 @@ struct type_record { #ifdef PYBIND11_BACKWARD_COMPATIBILITY_TP_DICTOFFSET dynamic_attr |= base_info->type->tp_dictoffset != 0; #else - dynamic_attr |= (base_info->type->tp_flags & Py_TPFLAGS_MANAGED_DICT) != 0; + dynamic_attr |= (PyType_GetFlags(base_info->type) & Py_TPFLAGS_MANAGED_DICT) != 0; #endif if (caster) { diff --git a/include/pybind11/cast.h b/include/pybind11/cast.h index 1c4973b748..262cafc48d 100644 --- a/include/pybind11/cast.h +++ b/include/pybind11/cast.h @@ -2244,8 +2244,13 @@ class unpacking_collector { if (m_names) { nargs -= m_names.size(); } - PyObject *result = _PyObject_Vectorcall( - ptr, m_args.data() + 1, nargs | PY_VECTORCALL_ARGUMENTS_OFFSET, m_names.ptr()); + PyObject *result = +#if PY_VERSION_HEX >= 0x03090000 + PyObject_Vectorcall( +#else + _PyObject_Vectorcall( +#endif + ptr, m_args.data() + 1, nargs | PY_VECTORCALL_ARGUMENTS_OFFSET, m_names.ptr()); if (!result) { throw error_already_set(); }