added more error checking to _glapi_add_entrypoint()
authorBrian Paul <brian.paul@tungstengraphics.com>
Sat, 12 Feb 2000 17:31:40 +0000 (17:31 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Sat, 12 Feb 2000 17:31:40 +0000 (17:31 +0000)
src/mesa/glapi/glapi.c

index 65acafb..fc1ab6c 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: glapi.c,v 1.33 2000/02/12 16:44:25 brianp Exp $ */
+/* $Id: glapi.c,v 1.34 2000/02/12 17:31:40 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -345,8 +345,6 @@ generate_entrypoint(GLuint functionOffset)
 GLboolean
 _glapi_add_entrypoint(const char *funcName, GLuint offset)
 {
-   GLint index;
-
    /* Make sure we don't try to add a new entrypoint after someone
     * has already called _glapi_get_dispatch_table_size()!  If that's
     * happened the caller's information will now be out of date.
@@ -354,12 +352,21 @@ _glapi_add_entrypoint(const char *funcName, GLuint offset)
    assert(!GetSizeCalled);
 
    /* first check if the named function is already statically present */
-   index = get_static_proc_offset(funcName);
+   {
+      GLint index = get_static_proc_offset(funcName);
+      if (index >= 0) {
+         return (GLboolean) (index == offset);  /* bad offset! */
+      }
+   }
 
-   if (index >= 0) {
-      return (GLboolean) (index == offset);  /* bad offset! */
+   {
+      /* make sure this offset/name pair is legal */
+      const char *name = _glapi_get_proc_name(offset);
+      if (name && strcmp(name, funcName) != 0)
+         return GL_FALSE;  /* bad name! */
    }
-   else {
+
+   {
       /* be sure index and name match known data */
       GLuint i;
       for (i = 0; i < NumExtEntryPoints; i++) {