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

errno extern variable redefined. Not compiling for Android

    XMLWordPrintableJSON

    Details

      Description

      It seems that the definition of errno we are using on the c_glib transport is not 100% correct. While it's ok for ISO C99 compilers it fails under Android.

      My opinion is that Android is behaving incorrectly here but I cannot be sure until I check with you.

      In the thrift_socket.c an thrift_server_socket.c implementations there's a errno variable declared.

      /* for errors coming from socket() and connect() */
      extern int errno;

      This variable is redefined in the ndk of the in the file arch-arm/usr/include/errno.h
      I don't know why.

      /* a macro expanding to the errno l-value */
      #define errno (*__errno())

      So the compilation fails because redefined.

      Commenting out the extern definition on these files it compiles, it was tested and it works. But I don't know how this can work since the definition of errno on the files change from int to pointer.

      Can someone comment this please?

        Attachments

          Activity

            People

            • Assignee:
              gad Gonzalo Aguilar
              Reporter:
              gad Gonzalo Aguilar
            • Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: