diff --git a/src/hb-open-type-private.hh b/src/hb-open-type-private.hh
index da2f0cd..7f442d0 100644
--- a/src/hb-open-type-private.hh
+++ b/src/hb-open-type-private.hh
@@ -230,8 +230,6 @@
 #define SANITIZE(X) likely ((X).sanitize (SANITIZE_ARG))
 
 #define SANITIZE_THIS(X) likely ((X).sanitize (SANITIZE_ARG, CharP(this)))
-#define SANITIZE_THIS2(X,Y) (SANITIZE_THIS (X) && SANITIZE_THIS (Y))
-
 #define SANITIZE_BASE(X,B) likely ((X).sanitize (SANITIZE_ARG, B))
 
 #define SANITIZE_SELF() SANITIZE_OBJ (*this)
diff --git a/src/hb-ot-layout-common-private.hh b/src/hb-ot-layout-common-private.hh
index 94bbff3..7ecc5bd 100644
--- a/src/hb-ot-layout-common-private.hh
+++ b/src/hb-ot-layout-common-private.hh
@@ -202,7 +202,8 @@
 
   inline bool sanitize (SANITIZE_ARG_DEF) {
     TRACE_SANITIZE ();
-    return SANITIZE_THIS2 (defaultLangSys, langSys);
+    return SANITIZE_THIS (defaultLangSys)
+	&& SANITIZE_THIS (langSys);
   }
 
   private:
diff --git a/src/hb-ot-layout-gdef-private.hh b/src/hb-ot-layout-gdef-private.hh
index c1e021b..e5d092e 100644
--- a/src/hb-ot-layout-gdef-private.hh
+++ b/src/hb-ot-layout-gdef-private.hh
@@ -69,7 +69,8 @@
 
   inline bool sanitize (SANITIZE_ARG_DEF) {
     TRACE_SANITIZE ();
-    return SANITIZE_THIS2 (coverage, attachPoint);
+    return SANITIZE_THIS (coverage)
+	&& SANITIZE_THIS (attachPoint);
   }
 
   private:
@@ -244,7 +245,8 @@
 
   inline bool sanitize (SANITIZE_ARG_DEF) {
     TRACE_SANITIZE ();
-    return SANITIZE_THIS2 (coverage, ligGlyph);
+    return SANITIZE_THIS (coverage)
+	&& SANITIZE_THIS (ligGlyph);
   }
 
   private:
@@ -349,8 +351,8 @@
   inline bool sanitize (SANITIZE_ARG_DEF) {
     TRACE_SANITIZE ();
     return SANITIZE (version) && likely (version.major == 1) &&
-           SANITIZE_THIS2 (glyphClassDef, attachList) &&
-	   SANITIZE_THIS2 (ligCaretList, markAttachClassDef) &&
+           SANITIZE_THIS (glyphClassDef) && SANITIZE_THIS (attachList) &&
+	   SANITIZE_THIS (ligCaretList) && SANITIZE_THIS (markAttachClassDef) &&
 	   (version < 0x00010002 || SANITIZE_THIS (markGlyphSetsDef[0]));
   }
 
diff --git a/src/hb-ot-layout-gpos-private.hh b/src/hb-ot-layout-gpos-private.hh
index 6504077..4fce10a 100644
--- a/src/hb-ot-layout-gpos-private.hh
+++ b/src/hb-ot-layout-gpos-private.hh
@@ -270,7 +270,9 @@
 
   inline bool sanitize (SANITIZE_ARG_DEF) {
     TRACE_SANITIZE ();
-    return SANITIZE_SELF () && SANITIZE_THIS2 (xDeviceTable, yDeviceTable);
+    return SANITIZE_SELF ()
+	&& SANITIZE_THIS (xDeviceTable)
+	&& SANITIZE_THIS (yDeviceTable);
   }
 
   private:
@@ -698,7 +700,7 @@
   inline bool sanitize (SANITIZE_ARG_DEF) {
     TRACE_SANITIZE ();
     if (!(SANITIZE_SELF () && SANITIZE_THIS (coverage) &&
-	  SANITIZE_THIS2 (classDef1, classDef2))) return false;
+	  SANITIZE_THIS (classDef1) && SANITIZE_THIS (classDef2))) return false;
 
     unsigned int len1 = valueFormat1.get_len ();
     unsigned int len2 = valueFormat2.get_len ();
@@ -976,7 +978,8 @@
 
   inline bool sanitize (SANITIZE_ARG_DEF) {
     TRACE_SANITIZE ();
-    return SANITIZE_THIS2 (coverage, entryExitRecord);
+    return SANITIZE_THIS (coverage)
+	&& SANITIZE_THIS (entryExitRecord);
   }
 
   private:
diff --git a/src/hb-ot-layout-gsub-private.hh b/src/hb-ot-layout-gsub-private.hh
index d2890b0..170ec96 100644
--- a/src/hb-ot-layout-gsub-private.hh
+++ b/src/hb-ot-layout-gsub-private.hh
@@ -208,7 +208,8 @@
 
   inline bool sanitize (SANITIZE_ARG_DEF) {
     TRACE_SANITIZE ();
-    return SANITIZE_THIS2 (coverage, sequence);
+    return SANITIZE_THIS (coverage)
+	&& SANITIZE_THIS (sequence);
   }
 
   private:
@@ -303,7 +304,8 @@
 
   inline bool sanitize (SANITIZE_ARG_DEF) {
     TRACE_SANITIZE ();
-    return SANITIZE_THIS2 (coverage, alternateSet);
+    return SANITIZE_THIS (coverage)
+	&& SANITIZE_THIS (alternateSet);
   }
 
   private:
@@ -486,7 +488,8 @@
 
   inline bool sanitize (SANITIZE_ARG_DEF) {
     TRACE_SANITIZE ();
-    return SANITIZE_THIS2 (coverage, ligatureSet);
+    return SANITIZE_THIS (coverage)
+	&& SANITIZE_THIS (ligatureSet);
   }
 
   private:
@@ -616,7 +619,7 @@
 
   inline bool sanitize (SANITIZE_ARG_DEF) {
     TRACE_SANITIZE ();
-    if (!SANITIZE_THIS2 (coverage, backtrack))
+    if (!(SANITIZE_THIS (coverage) && SANITIZE_THIS (backtrack)))
       return false;
     OffsetArrayOf<Coverage> &lookahead = StructAfter<OffsetArrayOf<Coverage> > (backtrack);
     if (!SANITIZE_THIS (lookahead))
diff --git a/src/hb-ot-layout-gsubgpos-private.hh b/src/hb-ot-layout-gsubgpos-private.hh
index d07fe25..63239e5 100644
--- a/src/hb-ot-layout-gsubgpos-private.hh
+++ b/src/hb-ot-layout-gsubgpos-private.hh
@@ -358,7 +358,8 @@
 
   inline bool sanitize (SANITIZE_ARG_DEF) {
     TRACE_SANITIZE ();
-    return SANITIZE_THIS2 (coverage, ruleSet);
+    return SANITIZE_THIS (coverage)
+	&& SANITIZE_THIS (ruleSet);
   }
 
   private:
@@ -644,7 +645,8 @@
 
   inline bool sanitize (SANITIZE_ARG_DEF) {
     TRACE_SANITIZE ();
-    return SANITIZE_THIS2 (coverage, ruleSet);
+    return SANITIZE_THIS (coverage)
+	&& SANITIZE_THIS (ruleSet);
   }
 
   private:
@@ -690,9 +692,11 @@
 
   inline bool sanitize (SANITIZE_ARG_DEF) {
     TRACE_SANITIZE ();
-    return SANITIZE_THIS2 (coverage, backtrackClassDef) &&
-	   SANITIZE_THIS2 (inputClassDef, lookaheadClassDef) &&
-	   SANITIZE_THIS (ruleSet);
+    return SANITIZE_THIS (coverage)
+	&& SANITIZE_THIS (backtrackClassDef)
+	&& SANITIZE_THIS (inputClassDef)
+	&& SANITIZE_THIS (lookaheadClassDef)
+	&& SANITIZE_THIS (ruleSet);
   }
 
   private:
