GDEF completely working now
diff --git a/src/hb-ot-layout-open-private.h b/src/hb-ot-layout-open-private.h
index 94ff209..482cf14 100644
--- a/src/hb-ot-layout-open-private.h
+++ b/src/hb-ot-layout-open-private.h
@@ -27,6 +27,10 @@
 #ifndef HB_OT_LAYOUT_OPEN_PRIVATE_H
 #define HB_OT_LAYOUT_OPEN_PRIVATE_H
 
+#ifndef HB_OT_LAYOUT_CC
+#error "This file should only be included from hb-ot-layout.c"
+#endif
+
 #include "hb-ot-layout-private.h"
 
 
@@ -127,7 +131,7 @@
         return &(*this)[i]; \
     return NULL; \
   } \
-  inline const Type& get_##name_by_tag (hb_tag_t tag) const { \
+  inline const Type& get_##name##_by_tag (hb_tag_t tag) const { \
     for (unsigned int i = 0; i < this->get_len (); i++) \
       if (tag == (*this)[i].tag) \
         return (*this)[i]; \
@@ -158,6 +162,7 @@
   private: inline Type() {} /* cannot be instantiated */ \
   public:
 
+/* TODO use a global nul-array for most Null's */
 /* defines Null##Type as a safe nil instance of Type */
 #define DEFINE_NULL_DATA(Type, size, data) \
   static const unsigned char Null##Type##Data[size] = data; \
@@ -170,11 +175,11 @@
   ASSERT_SIZE (Type, size); \
   DEFINE_NULL_DATA (Type, size, data)
 #define DEFINE_NULL_ALIAS(NewType, OldType) \
-  static const NewType &Null##NewType = *(NewType *)Null##OldType##Data
+  /* XXX static */ const NewType &Null##NewType = *(NewType *)Null##OldType##Data
 
 /* get_for_data() is a static class method returning a reference to an
  * instance of Type located at the input data location.  It's just a
- * fancy cast! */
+ * fancy, NULL-safe, cast! */
 #define STATIC_DEFINE_GET_FOR_DATA(Type) \
   static inline const Type& get_for_data (const char *data) { \
     extern const Type &Null##Type; \