[ros-diffs] [gvg] 17902: Count each handle which has pending events only once, independent of the number

gvg at svn.reactos.com gvg at svn.reactos.com
Sat Sep 17 23:22:57 CEST 2005


Count each handle which has pending events only once, independent of the
number
of pending events. Fixes bug 779.
Modified: trunk/reactos/lib/msafd/misc/dllmain.c
  _____  

Modified: trunk/reactos/lib/msafd/misc/dllmain.c
--- trunk/reactos/lib/msafd/misc/dllmain.c	2005-09-17 21:02:38 UTC
(rev 17901)
+++ trunk/reactos/lib/msafd/misc/dllmain.c	2005-09-17 21:22:47 UTC
(rev 17902)
@@ -596,6 +596,7 @@

     PVOID				PollBuffer;
     ULONG				i, j = 0, x;
     HANDLE                              SockEvent;
+    BOOL                                HandleCounted;
     
     Status = NtCreateEvent( &SockEvent, GENERIC_READ | GENERIC_WRITE,
 			    NULL, 1, FALSE );
@@ -690,6 +691,7 @@
     
     /* Return in FDSET Format */
     for (i = 0; i < HandleCount; i++) {
+	HandleCounted = FALSE;
 	for(x = 1; x; x<<=1) {
 	    switch (PollInfo->Handles[i].Events & x) {
 	    case AFD_EVENT_RECEIVE: 
@@ -700,7 +702,10 @@
 		AFD_DbgPrint(MID_TRACE,("Event %x on handle %x\n",
 					PollInfo->Handles[i].Events,
 					PollInfo->Handles[i].Handle));
-		OutCount++;
+		if (! HandleCounted) {
+		    OutCount++;
+		    HandleCounted = TRUE;
+		}
 		if( readfds ) FD_SET(PollInfo->Handles[i].Handle,
readfds);
 		break;
 
@@ -708,7 +713,10 @@
 		AFD_DbgPrint(MID_TRACE,("Event %x on handle %x\n",
 					PollInfo->Handles[i].Events,
 					PollInfo->Handles[i].Handle));
-		OutCount++;
+		if (! HandleCounted) {
+		    OutCount++;
+		    HandleCounted = TRUE;
+		}
 		if( writefds ) FD_SET(PollInfo->Handles[i].Handle,
writefds);
 		break;
 		
@@ -716,7 +724,10 @@
 		AFD_DbgPrint(MID_TRACE,("Event %x on handle %x\n",
 					PollInfo->Handles[i].Events,
 					PollInfo->Handles[i].Handle));
-		OutCount++;
+		if (! HandleCounted) {
+		    OutCount++;
+		    HandleCounted = TRUE;
+		}
 		if( exceptfds ) FD_SET(PollInfo->Handles[i].Handle,
exceptfds);
 		break;
 	    }
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.reactos.org/pipermail/ros-diffs/attachments/20050917/9ae342e4/attachment.html


More information about the Ros-diffs mailing list