[ros-diffs] [tfaber] 55162: [WS2_32] - Fix invalid AQ_WIN16 comparisons. Spotted by you-know-what. Fix taken from Wine.

tfaber at svn.reactos.org tfaber at svn.reactos.org
Wed Jan 25 00:12:19 UTC 2012


Author: tfaber
Date: Wed Jan 25 00:12:18 2012
New Revision: 55162

URL: http://svn.reactos.org/svn/reactos?rev=55162&view=rev
Log:
[WS2_32]
- Fix invalid AQ_WIN16 comparisons. Spotted by you-know-what. Fix taken from Wine.

Modified:
    trunk/reactos/dll/win32/ws2_32/misc/async.c

Modified: trunk/reactos/dll/win32/ws2_32/misc/async.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ws2_32/misc/async.c?rev=55162&r1=55161&r2=55162&view=diff
==============================================================================
--- trunk/reactos/dll/win32/ws2_32/misc/async.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/ws2_32/misc/async.c [iso-8859-1] Wed Jan 25 00:12:18 2012
@@ -200,23 +200,31 @@
 	WS_hostent *p_to32 = (WS_hostent*)p_to;
 	int	size = hostent_size(p_he) +
 		(
-		(flag & AQ_WIN16) ? sizeof(struct ws_hostent16) : sizeof(WS_hostent)
+		 (flag & AQ_WIN32) ? sizeof(WS_hostent) : sizeof(struct ws_hostent16)
 		- sizeof(struct hostent)
 		);
 
 	if (t_size < size)
 		return -size;
 	p = p_to;
-	p += (flag & AQ_WIN16) ?
-		sizeof(struct ws_hostent16) : sizeof(WS_hostent);
+	p += (flag & AQ_WIN32) ?
+	     sizeof(WS_hostent) : sizeof(struct ws_hostent16);
 	p_name = p;
 	strcpy(p, p_he->h_name); p += strlen(p) + 1;
 	p_aliases = p;
-	p += list_dup(p_he->h_aliases, p, p_base + (p - (char*)p_to), 0);
+	p += list_dup(p_he->h_aliases, p, p_base + (p - p_to), 0);
 	p_addr = p;
-	list_dup(p_he->h_addr_list, p, p_base + (p - (char*)p_to), p_he->h_length);
-
-	if (flag & AQ_WIN16)
+	list_dup(p_he->h_addr_list, p, p_base + (p - p_to), p_he->h_length);
+
+	if (flag & AQ_WIN32)
+	{
+	    p_to32->h_addrtype = p_he->h_addrtype;
+	    p_to32->h_length = p_he->h_length;
+	    p_to32->h_name = (p_base + (p_name - p_to));
+	    p_to32->h_aliases = (char **)(p_base + (p_aliases - p_to));
+	    p_to32->h_addr_list = (char **)(p_base + (p_addr - p_to));
+	}
+	else
 	{
 	    p_to16->h_addrtype = (INT16)p_he->h_addrtype;
 	    p_to16->h_length = (INT16)p_he->h_length;
@@ -224,14 +232,6 @@
 	    p_to16->h_aliases = (SEGPTR)(p_base + (p_aliases - p_to));
 	    p_to16->h_addr_list = (SEGPTR)(p_base + (p_addr - p_to));
 	}
-	else
-	{
-	    p_to32->h_addrtype = p_he->h_addrtype;
-	    p_to32->h_length = p_he->h_length;
-	    p_to32->h_name = (p_base + (p_name - p_to));
-	    p_to32->h_aliases = (char **)(p_base + (p_aliases - p_to));
-	    p_to32->h_addr_list = (char **)(p_base + (p_addr - p_to));
-	}
 
 	return size;
 }
@@ -258,31 +258,30 @@
 	WS_protoent *p_to32 = (WS_protoent*)p_to;
 	int	size = protoent_size(p_pe) +
 		(
-		(flag & AQ_WIN16) ? sizeof(struct ws_protoent16) : sizeof(WS_protoent)
+		 (flag & AQ_WIN32) ? sizeof(WS_protoent) : sizeof(struct ws_protoent16)
 		- sizeof(struct protoent)
 		);
 
 	if (t_size < size)
 		return -size;
 	p = p_to;
-	p += (flag & AQ_WIN16) ?
-		sizeof(struct ws_protoent16) : sizeof(WS_protoent);
+	p += (flag & AQ_WIN32) ? sizeof(WS_protoent) : sizeof(struct ws_protoent16);
 	p_name = p;
 	strcpy(p, p_pe->p_name); p += strlen(p) + 1;
 	p_aliases = p;
-	list_dup(p_pe->p_aliases, p, p_base + (p - (char*)p_to), 0);
-
-	if (flag & AQ_WIN16)
+	list_dup(p_pe->p_aliases, p, p_base + (p - p_to), 0);
+
+	if (flag & AQ_WIN32)
+	{
+	    p_to32->p_proto = p_pe->p_proto;
+	    p_to32->p_name = (p_base) + (p_name - p_to);
+	    p_to32->p_aliases = (char **)((p_base) + (p_aliases - p_to));
+	}
+	else
 	{
 	    p_to16->p_proto = (INT16)p_pe->p_proto;
 	    p_to16->p_name = (SEGPTR)(p_base) + (p_name - p_to);
 	    p_to16->p_aliases = (SEGPTR)((p_base) + (p_aliases - p_to));
-	}
-	else
-	{
-	    p_to32->p_proto = p_pe->p_proto;
-	    p_to32->p_name = (p_base) + (p_name - p_to);
-	    p_to32->p_aliases = (char **)((p_base) + (p_aliases - p_to));
 	}
 
 	return size;
@@ -312,15 +311,14 @@
 	WS_servent *p_to32 = (WS_servent*)p_to;
 	int	size = servent_size(p_se) +
 		(
-		(flag & AQ_WIN16) ? sizeof(struct ws_servent16) : sizeof(WS_servent)
+		 (flag & AQ_WIN32) ? sizeof(WS_servent) : sizeof(struct ws_servent16)
 		- sizeof(struct servent)
 		);
 
 	if (t_size < size)
 		return -size;
 	p = p_to;
-	p += (flag & AQ_WIN16) ?
-		sizeof(struct ws_servent16) : sizeof(WS_servent);
+	p += (flag & AQ_WIN32) ? sizeof(WS_servent) : sizeof(struct ws_servent16);
 	p_name = p;
 	strcpy(p, p_se->s_name); p += strlen(p) + 1;
 	p_proto = p;
@@ -328,19 +326,19 @@
 	p_aliases = p;
 	list_dup(p_se->s_aliases, p, p_base + (p - p_to), 0);
 
-	if (flag & AQ_WIN16)
+	if (flag & AQ_WIN32)
+	{
+	    p_to32->s_port = p_se->s_port;
+	    p_to32->s_name = (p_base + (p_name - p_to));
+	    p_to32->s_proto = (p_base + (p_proto - p_to));
+	    p_to32->s_aliases = (char **)(p_base + (p_aliases - p_to));
+	}
+	else
 	{
 	    p_to16->s_port = (INT16)p_se->s_port;
 	    p_to16->s_name = (SEGPTR)(p_base + (p_name - p_to));
 	    p_to16->s_proto = (SEGPTR)(p_base + (p_proto - p_to));
 	    p_to16->s_aliases = (SEGPTR)(p_base + (p_aliases - p_to));
-	}
-	else
-	{
-	    p_to32->s_port = p_se->s_port;
-	    p_to32->s_name = (p_base + (p_name - p_to));
-	    p_to32->s_proto = (p_base + (p_proto - p_to));
-	    p_to32->s_aliases = (char **)(p_base + (p_aliases - p_to));
 	}
 
 	return size;




More information about the Ros-diffs mailing list