wesnoth-cvs-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Wesnoth-cvs-commits] wesnoth/src network_worker.cpp


From: David White
Subject: [Wesnoth-cvs-commits] wesnoth/src network_worker.cpp
Date: Sun, 23 Jan 2005 17:04:20 -0500

CVSROOT:        /cvsroot/wesnoth
Module name:    wesnoth
Branch:         
Changes by:     David White <address@hidden>    05/01/23 22:04:20

Modified files:
        src            : network_worker.cpp 

Log message:
        attempt to fix bug where an assertion would fail in network_worker.cpp

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/wesnoth/wesnoth/src/network_worker.cpp.diff?tr1=1.14&tr2=1.15&r1=text&r2=text

Patches:
Index: wesnoth/src/network_worker.cpp
diff -u wesnoth/src/network_worker.cpp:1.14 wesnoth/src/network_worker.cpp:1.15
--- wesnoth/src/network_worker.cpp:1.14 Fri Dec 31 21:01:37 2004
+++ wesnoth/src/network_worker.cpp      Sun Jan 23 22:04:20 2005
@@ -167,6 +167,24 @@
        }
 
        cond->notify_one();
+}
+
+namespace
+{
+
+void remove_buffers(TCPsocket sock)
+{
+       buffer_set new_bufs;
+       new_bufs.reserve(bufs.size());
+       for(buffer_set::iterator i = bufs.begin(), i_end = bufs.end(); i != 
i_end; ++i) {
+               if ((*i)->sock == sock)
+                       delete *i;
+               else
+                       new_bufs.push_back(*i);
+       }
+       bufs.swap(new_bufs);
+}
+
 }
 
 void close_socket(TCPsocket sock)
@@ -184,17 +202,8 @@
                        if(lock_it != sockets_locked.end()) {
                                sockets_locked.erase(lock_it);
                        }
-
-                       size_t size = bufs.size();
-                       buffer_set new_bufs;
-                       new_bufs.reserve(size);
-                       for(buffer_set::iterator i = bufs.begin(), i_end = 
bufs.end(); i != i_end; ++i) {
-                               if ((*i)->sock == sock)
-                                       delete *i;
-                               else
-                                       new_bufs.push_back(*i);
-                       }
-                       bufs.swap(new_bufs);
+
+                       remove_buffers(sock);
 
                        break;
                }
@@ -209,7 +218,8 @@
                        if(i->second == SOCKET_ERROR) {
                                --socket_errors;
                                const TCPsocket res = i->first;
-                               sockets_locked.erase(i);
+                               sockets_locked.erase(i);
+                               remove_buffers(res);
                                return res;
                        }
                }
@@ -218,4 +228,4 @@
        return 0;
 }
 
-}
+}
\ No newline at end of file




reply via email to

[Prev in Thread] Current Thread [Next in Thread]