From 6f5078b555204b6d37a524afb290de6d70b09d31 Mon Sep 17 00:00:00 2001 From: rubidium Date: Fri, 23 Jan 2009 09:00:01 +0000 Subject: (svn r15217) -Fix [FS#2573] (r15176): more corner cases when removing things from iterated vectors --- src/network/network_content.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/network/network_content.cpp') diff --git a/src/network/network_content.cpp b/src/network/network_content.cpp index c0e097479..bdb3608ed 100644 --- a/src/network/network_content.cpp +++ b/src/network/network_content.cpp @@ -753,7 +753,7 @@ void ClientNetworkContentSocketHandler::OnConnect(bool success) for (ContentCallback **iter = this->callbacks.Begin(); iter != this->callbacks.End(); /* nothing */) { ContentCallback *cb = *iter; cb->OnConnect(success); - if (*iter == cb) iter++; + if (iter != this->callbacks.End() && *iter == cb) iter++; } } @@ -762,7 +762,7 @@ void ClientNetworkContentSocketHandler::OnDisconnect() for (ContentCallback **iter = this->callbacks.Begin(); iter != this->callbacks.End(); /* nothing */) { ContentCallback *cb = *iter; cb->OnDisconnect(); - if (*iter == cb) iter++; + if (iter != this->callbacks.End() && *iter == cb) iter++; } } @@ -771,7 +771,7 @@ void ClientNetworkContentSocketHandler::OnReceiveContentInfo(const ContentInfo * for (ContentCallback **iter = this->callbacks.Begin(); iter != this->callbacks.End(); /* nothing */) { ContentCallback *cb = *iter; cb->OnReceiveContentInfo(ci); - if (*iter == cb) iter++; + if (iter != this->callbacks.End() && *iter == cb) iter++; } } @@ -780,7 +780,7 @@ void ClientNetworkContentSocketHandler::OnDownloadProgress(const ContentInfo *ci for (ContentCallback **iter = this->callbacks.Begin(); iter != this->callbacks.End(); /* nothing */) { ContentCallback *cb = *iter; cb->OnDownloadProgress(ci, bytes); - if (*iter == cb) iter++; + if (iter != this->callbacks.End() && *iter == cb) iter++; } } @@ -794,7 +794,7 @@ void ClientNetworkContentSocketHandler::OnDownloadComplete(ContentID cid) for (ContentCallback **iter = this->callbacks.Begin(); iter != this->callbacks.End(); /* nothing */) { ContentCallback *cb = *iter; cb->OnDownloadComplete(cid); - if (*iter == cb) iter++; + if (iter != this->callbacks.End() && *iter == cb) iter++; } } -- cgit v1.2.3-54-g00ecf