diff --git a/src/hb-open-type-private.hh b/src/hb-open-type-private.hh
index 7079862..8328684 100644
--- a/src/hb-open-type-private.hh
+++ b/src/hb-open-type-private.hh
@@ -521,7 +521,7 @@
   const Type *array(void) const { return &StructAfter<Type> (len); }
   Type *array(void) { return &StructAfter<Type> (len); }
 
-  const Type *const_sub_array (unsigned int start_offset, unsigned int *pcount /* IN/OUT */) const
+  const Type *sub_array (unsigned int start_offset, unsigned int *pcount /* IN/OUT */) const
   {
     unsigned int count = len;
     if (HB_UNLIKELY (start_offset > count))
diff --git a/src/hb-ot-layout-common-private.hh b/src/hb-ot-layout-common-private.hh
index 5623de4..4e232d4 100644
--- a/src/hb-ot-layout-common-private.hh
+++ b/src/hb-ot-layout-common-private.hh
@@ -76,7 +76,7 @@
 				hb_tag_t     *record_tags /* OUT */) const
   {
     if (record_count) {
-      const Record<Type> *array = this->const_sub_array (start_offset, record_count);
+      const Record<Type> *array = this->sub_array (start_offset, record_count);
       unsigned int count = *record_count;
       for (unsigned int i = 0; i < count; i++)
 	record_tags[i] = array[i].tag;
@@ -129,7 +129,7 @@
 				   unsigned int *_indexes /* OUT */) const
   {
     if (_count) {
-      const USHORT *array = this->const_sub_array (start_offset, _count);
+      const USHORT *array = this->sub_array (start_offset, _count);
       unsigned int count = *_count;
       for (unsigned int i = 0; i < count; i++)
 	_indexes[i] = array[i];
diff --git a/src/hb-ot-layout-gdef-private.hh b/src/hb-ot-layout-gdef-private.hh
index 0122fcc..4f6c1d9 100644
--- a/src/hb-ot-layout-gdef-private.hh
+++ b/src/hb-ot-layout-gdef-private.hh
@@ -58,7 +58,7 @@
     const AttachPoint &points = this+attachPoint[index];
 
     if (point_count) {
-      const USHORT *array = points.const_sub_array (start_offset, point_count);
+      const USHORT *array = points.sub_array (start_offset, point_count);
       unsigned int count = *point_count;
       for (unsigned int i = 0; i < count; i++)
 	point_array[i] = array[i];
@@ -196,7 +196,7 @@
 				      int *caret_array /* OUT */) const
   {
     if (caret_count) {
-      const OffsetTo<CaretValue> *array = carets.const_sub_array (start_offset, caret_count);
+      const OffsetTo<CaretValue> *array = carets.sub_array (start_offset, caret_count);
       unsigned int count = *caret_count;
       for (unsigned int i = 0; i < count; i++)
 	caret_array[i] = (this+array[i]).get_caret_value (context, glyph_id);
