bpo-42099: Fix reference to ob_type in unionobject.c and ceval (GH-22829)

* Use Py_TYPE() rather than o->ob_type.
diff --git a/Objects/unionobject.c b/Objects/unionobject.c
index 89fdaf4..1b7f8ab 100644
--- a/Objects/unionobject.c
+++ b/Objects/unionobject.c
@@ -15,7 +15,7 @@ unionobject_dealloc(PyObject *self)
     unionobject *alias = (unionobject *)self;
 
     Py_XDECREF(alias->args);
-    self->ob_type->tp_free(self);
+    Py_TYPE(self)->tp_free(self);
 }
 
 static Py_hash_t
diff --git a/Python/ceval.c b/Python/ceval.c
index 7338be5..13b209f 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -3193,7 +3193,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag)
 
                         descr = _PyType_Lookup(type, name);
                         if (descr == NULL ||
-                            descr->ob_type->tp_descr_get == NULL ||
+                            Py_TYPE(descr)->tp_descr_get == NULL ||
                             !PyDescr_IsData(descr))
                         {
                             dictptr = (PyObject **) ((char *)owner + type->tp_dictoffset);