Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-5729

getProcAddress() should return a function pointer

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • P3: Somewhat important
    • 5.0.0
    • 3.x
    • GUI: OpenGL
    • None
    • 9702400e2d45c074922e488e01ab8ade82431b47

    Description

      The return type of QGLContext::getProcAddress() should be a function pointer and not a data pointer. The wrapped function glXGetProcAddress() has the correct prototype, but for some reason the QGLContext method deviates from the correct GLX API. According to the C and C++ standards, it is valid to cast between different function pointer types, as long as the actual call is made through a pointer with the original signature of the function pointed to. However, the standard explicitly does not make the same guarantee for the conversion from a function pointer to a non-function pointer and back.

      Strictly speaking, it should be a pointer to a function with C linkage:

      extern "C"

      { typedef void (*QGLProc)(); }

      ...
      QGLProc getProcAddress(const QString&);

      This is an API bug, and the invalid type conversion will cause compilers to complain with the right warning settings.

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            rodal Samuel Rødal
            danielk Daniel Elstner
            Votes:
            3 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes