glapi: fix _glapi_get_proc_address() for mangled function names
authorFrederic Devernay <frederic.devernay@m4x.org>
Mon, 25 Apr 2016 16:39:43 +0000 (10:39 -0600)
committerBrian Paul <brianp@vmware.com>
Mon, 25 Apr 2016 18:59:29 +0000 (12:59 -0600)
In the dispatch table, all functions are stored without the "m" prefix.
Modify code so that OSMesaGetProcAddress works both with gl and mgl
prefixes. Similar to
https://lists.freedesktop.org/archives/mesa-dev/2015-September/095251.html

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94994
Cc: "11.1 11.2" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Brian Paul <brianp@vmware.com>
src/mapi/glapi/glapi_getproc.c

index 524a771ca436e2f7a67ada3ef597fb9718b17053..8f6f0a4b82e760c2aa7e3980f2f50ab915a26ae6 100644 (file)
@@ -62,12 +62,7 @@ get_static_proc( const char * n )
    GLuint i;
    for (i = 0; static_functions[i].Name_offset >= 0; i++) {
       const char *testName = gl_string_table + static_functions[i].Name_offset;
-#ifdef MANGLE
-      /* skip the prefix on the name */
-      if (strcmp(testName, n + 1) == 0)
-#else
       if (strcmp(testName, n) == 0)
-#endif
       {
         return &static_functions[i];
       }
@@ -516,15 +511,14 @@ _glapi_get_proc_address(const char *funcName)
 
    init_glapi_relocs_once();
 
-#ifdef MANGLE
-   /* skip the prefix on the name */
-   if (funcName[1] != 'g' || funcName[2] != 'l')
-      return NULL;
-#else
-   if (funcName[0] != 'g' || funcName[1] != 'l')
-      return NULL;
+#ifdef USE_MGL_NAMESPACE
+   if (funcName && funcName[0] == 'm')
+      funcName++;
 #endif
 
+  if (!funcName || funcName[0] != 'g' || funcName[1] != 'l')
+      return NULL;
+
    /* search extension functions first */
    func = get_extension_proc_address(funcName);
    if (func)