Uploaded image for project: 'Thrift'
  1. Thrift
  2. THRIFT-3847

thrift/config.h includes a #define for VERSION which will likely conflict with existing user environment or code

VotersWatch issueWatchersLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments


    • Type: Bug
    • Status: Closed
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: 0.10.0
    • Fix Version/s: 0.11.0
    • Component/s: C++ - Library
    • Labels:
    • Environment:

      Ubuntu 14.04, used docker environment to build debian packages with "dpkg-buildpackage -d -tc" inside the docker environment.


      The built debian package installs /usr/include/thrift/config.h which has a #define VERSION in it. This is likely to conflict with third party packages or end-user code. It should be changed to THRIFT_VERSION as soon as possible. I recognize this is a breaking change but also an easy one for people to absorb. It just bit me on a project where VERSION was used as a variable name in some tests, and in some generated code where VERSION was used as the name of a string in a thrift structure, i.e.

      struct SomeStruct

      { 1: string VERSION }

      This won't build because the compiler will see VERSION in the generated code and change it to a string constant from thrift/config.h, which won't compile.

      Follow-up: THRIFT-3873 changed from "VERSION" to "PACKAGE_VERSION", not "THRIFT_VERSION" which was prescribed here.


        Issue Links



            • Assignee:
              jking3 James E. King III
              jking3 James E. King III


              • Created:

                Issue deployment