There is an ugly type bug in win32 sockets.pp.
This patch fixes it.

ssize_t = cuint16 -- this caused a bug with fprecv/fprecvfrom and fpsend/fpsendto calls because winsock.recv[from]/winsock.send[to] calls return a longint while fprecv used an unsigned int as return value.

This caused the recv call to recieve loads of rubbish when an error occured.

I changed ssize_t to Int64(as it is in unix).
Index: rtl/win32/sockets.pp
===================================================================
--- rtl/win32/sockets.pp        (revision 744)
+++ rtl/win32/sockets.pp        (working copy)
@@ -26,7 +26,7 @@
   cuint16=word;
   cuint32=cardinal;
   size_t =cuint32;
-  ssize_t=cuint16;
+  ssize_t=Int64;
   cint   =longint;
   pcint  =^cint;
   tsocklen=cint;
_______________________________________________
fpc-devel maillist  -  [email protected]
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to