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

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

            Dates

              Created:
              Updated:
              Resolved: