diff --git a/extensions/ARB/ARB_draw_elements_base_vertex.txt b/extensions/ARB/ARB_draw_elements_base_vertex.txt
index d91305e..caea004 100644
--- a/extensions/ARB/ARB_draw_elements_base_vertex.txt
+++ b/extensions/ARB/ARB_draw_elements_base_vertex.txt
@@ -120,16 +120,16 @@
 New Procedures and Functions
 
     void DrawElementsBaseVertex(enum mode, sizei count, enum type,
-         void *indices, int basevertex);
+         const void *indices, int basevertex);
 
     void DrawRangeElementsBaseVertex(enum mode, uint start, uint end,
-         sizei count, enum type, void *indices, int basevertex);
+         sizei count, enum type, const void *indices, int basevertex);
 
     void DrawElementsInstancedBaseVertex(enum mode, sizei count,
-         enum type, const void *indices, sizei primcount, int basevertex);
+         enum type, const void *indices, sizei drawcount, int basevertex);
 
     void MultiDrawElementsBaseVertex(enum mode, const sizei *count, enum type,
-         const void *const *indices, sizei primcount, const int *basevertex)
+         const void *const *indices, sizei drawcount, const int *basevertex)
 
 New Tokens
 
@@ -147,13 +147,13 @@
 
     "The commands
       void DrawElementsBaseVertex(enum mode, sizei count, enum type,
-           void *indices, int basevertex);
+           const void *indices, int basevertex);
 
       void DrawRangeElementsBaseVertex(enum mode, uint start, uint end,
-           sizei count, enum type, void *indices, int basevertex);
+           sizei count, enum type, const void *indices, int basevertex);
 
       void DrawElementsInstancedBaseVertex(enum mode, sizei count,
-           enum type, const void *indices, sizei primcount, int basevertex);
+           enum type, const void *indices, sizei drawcount, int basevertex);
 
     are equivalent to the commands with the same base name (without the
     "BaseVertex" suffix) except that the <i>th element transferred by
@@ -171,14 +171,14 @@
 
     The command
 
-      void MultiDrawElementsBaseVertex(enum mode, sizei *count,
-           enum type, void **indices, sizei primcount, int *basevertex);
+      void MultiDrawElementsBaseVertex(enum mode, const sizei *count,
+           enum type, const void *const *indices, sizei drawcount, const int *basevertex);
 
     behaves identically to DrawElementsBaseVertex except that
-    <primcount> separate lists of elements are specified instead. It has
+    <drawcount> separate lists of elements are specified instead. It has
     the same effect as:
 
-      for (i = 0; i < primcount; i++) {
+      for (i = 0; i < drawcount; i++) {
         if (count[i] > 0)
           DrawElementsBaseVertex(mode, count[i], type, indices[i],
                                  basevertex[i]);
