[coretext] Another round
diff --git a/src/hb-coretext.cc b/src/hb-coretext.cc
index eb1bf54..0831ecb 100644
--- a/src/hb-coretext.cc
+++ b/src/hb-coretext.cc
@@ -357,8 +357,8 @@
     /* Drop and recreate. */
     /* If someone dropped it in the mean time, throw it away and don't touch it.
      * Otherwise, destruct it. */
-    if (likely (cmpexch (data, nullptr)))
-      _hb_coretext_shaper_font_data_destroy (data);
+    if (likely (font->data.coretext.cmpexch (data, nullptr)))
+      _hb_coretext_shaper_font_data_destroy (const_cast<hb_coretext_font_data_t *> (data));
     else
       goto retry;
   }
@@ -384,7 +384,7 @@
   hb_font_set_ptem (font, coretext_font_size_to_ptem (CTFontGetSize(ct_font)));
 
   /* Let there be dragons here... */
-  font->data.coretext.exchange (nullptr, (hb_coretext_font_data_t *) CFRetain (ct_font));
+  font->data.coretext.cmpexch (nullptr, (hb_coretext_font_data_t *) CFRetain (ct_font));
 
   return font;
 }
@@ -392,7 +392,7 @@
 CTFontRef
 hb_coretext_font_get_ct_font (hb_font_t *font)
 {
-  const hb_coretext_font_data *data = hb_coretext_font_data_sync (font);
+  const hb_coretext_font_data_t *data = hb_coretext_font_data_sync (font);
   return data ? (CTFontRef) data : nullptr;
 }