-
Type:
Bug
-
Status: Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: 0.9.3
-
Fix Version/s: 0.10.0
-
Component/s: C glib - Library
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?