[PATCH] ws2_32: Use only the lower 16 bit as level when calling set+getsockopt from 16 bit

Detlef Riekenberg wine.dev at web.de
Mon Aug 24 15:32:53 CDT 2009


---
 dlls/ws2_32/socket16.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/dlls/ws2_32/socket16.c b/dlls/ws2_32/socket16.c
index b4b3fe8..c2bb444 100644
--- a/dlls/ws2_32/socket16.c
+++ b/dlls/ws2_32/socket16.c
@@ -294,8 +294,9 @@ INT16 WINAPI getsockopt16(SOCKET16 s, INT16 level, INT16 optname, char *optval,
     INT optlen32;
     INT *p = &optlen32;
     INT retVal;
+
     if( optlen ) optlen32 = *optlen; else p = NULL;
-    retVal = WS_getsockopt( s, level, optname, optval, p );
+    retVal = WS_getsockopt( s, level & 0xffff, optname, optval, p );
     if( optlen ) *optlen = optlen32;
     return retVal;
 }
@@ -397,7 +398,7 @@ INT16 WINAPI setsockopt16(SOCKET16 s, INT16 level, INT16 optname,
                           char *optval, INT16 optlen)
 {
     if( !optval ) return SOCKET_ERROR;
-    return WS_setsockopt( s, level, optname, optval, optlen );
+    return WS_setsockopt( s, level & 0xffff, optname, optval, optlen );
 }
 
 /***********************************************************************
-- 
1.5.4.3


--=-1NU4OiwHM6GI6UIkdjp/--




More information about the wine-patches mailing list