I just registered to answer you.
The error mentioned is an error, and not just a warning. So it can't just be switched off.
The problem is in the code itself.
I've looked at the code and found some lines like this:
if ((int)*bufs != 0 && (int)*bufs != -1)
...
as if pointers could always fit inside an integer.
That isn't true, as some systems are 64bit and thus pointers are 64bit in size, while ints could not be.
Instead of that nonsense it could be rewritten like this:
if (*bufs != (WDL_HeapBuf*)0 && *bufs != (WDL_HeapBuf*)-1)
That is, instead to cast the pointer to an integer to compare them, cast the numeric constant to a pointer.
That has to be done in each line of the code that has that type of error. Just find the type of the pointer and cast the int to that type.
Also there are some warnings regarding the conversion from strings constants to 'char*'.
That is caused because string constants are 'const char*' and the code converts them implicitly to 'char*'.
The solution is to put '(char*)' in front of the literal string.
I hadn't the time to correct the warnings myself.
Correcting the errors above do make the app compile, but there's a bug with the client sending the wrong password/whatever (maybe the bug is related with 64bit systems too).
I've compared the network packets from a Linux client and a Windows client on the same machine (with Wine) and they do differ. The Windows clients connects OK while the Linux one doesn't.
But I haven't looked yet at the cause.
I hope any developer takes the time to do the necessary changes.
BTW, for the devs: if you had chosen Qt as the library for the UI you could have made a multiplatform graphical client, for Mac, Linux, Windows and even mobile phones.
|