]> git.cworth.org Git - apitrace/blobdiff - dispatch/glproc.py
trace: Protect against uninitialized pointers if debug extensions are not exposed...
[apitrace] / dispatch / glproc.py
index 35ccf618c1cb5f2a8801bf390862ca6b03d62981..ea1667af3ef9148ceca5c374bcf3a16ca32115a1 100644 (file)
@@ -494,18 +494,42 @@ class GlDispatcher(Dispatcher):
     def header(self):
         print '''
 #if defined(_WIN32)
-extern HINSTANCE __libGlHandle;
+extern HMODULE _libGlHandle;
 #else
-extern void * __libGlHandle;
+extern void * _libGlHandle;
 #endif
 
-void * __getPublicProcAddress(const char *procName);
-void * __getPrivateProcAddress(const char *procName);
+void * _getPublicProcAddress(const char *procName);
+void * _getPrivateProcAddress(const char *procName);
 '''
         
-    def isFunctionPublic(self, function):
+    def isFunctionPublic(self, module, function):
         return function.name in public_symbols or function.name.startswith('CGL')
 
+    def failFunction(self, function):
+        # We fake this when they are not available
+        if function.name in ('glGetObjectLabel', 'glGetObjectPtrLabel'):
+            print r'    if (length != 0) *length = 0;'
+            print r'    if (label != 0 && bufSize > 0) *label = 0;'
+            return
+        if function.name in ('glGetDebugMessageLog', 'glGetDebugMessageLogARB'):
+            print r'    if (sources != 0) *sources = 0;'
+            print r'    if (types != 0) *types = 0;'
+            print r'    if (ids != 0) *ids = 0;'
+            print r'    if (severities != 0) *severities = 0;'
+            print r'    if (lengths != 0) *lengths = 0;'
+            print r'    if (messageLog != 0 && bufsize > 0) *messageLog = 0;'
+            return
+        if function.name in ('glGetDebugMessageLogAMD'):
+            print r'    if (categories != 0) *categories = 0;'
+            print r'    if (ids != 0) *ids = 0;'
+            print r'    if (severities != 0) *severities = 0;'
+            print r'    if (lengths != 0) *lengths = 0;'
+            print r'    if (message != 0 && bufsize > 0) *message = 0;'
+            return
+
+        Dispatcher.failFunction(self, function)
+
 
 if __name__ == '__main__':
     print
@@ -519,25 +543,25 @@ if __name__ == '__main__':
     print
     dispatcher.header()
     print
-    dispatcher.dispatch_api(eglapi)
+    dispatcher.dispatchModule(eglapi)
     print
     print '#if defined(_WIN32)'
     print
-    dispatcher.dispatch_api(wglapi)
+    dispatcher.dispatchModule(wglapi)
     print
     print '#elif defined(__APPLE__)'
     print
-    dispatcher.dispatch_api(cglapi)
+    dispatcher.dispatchModule(cglapi)
     print
     print '#elif defined(HAVE_X11)'
     print
-    dispatcher.dispatch_api(glxapi)
+    dispatcher.dispatchModule(glxapi)
     print
     print '#endif'
     print
-    dispatcher.dispatch_api(glapi)
+    dispatcher.dispatchModule(glapi)
     print
-    dispatcher.dispatch_api(glesapi)
+    dispatcher.dispatchModule(glesapi)
     print
 
     print '#endif /* !_GLPROC_HPP_ */'