summaryrefslogtreecommitdiff
path: root/indra/llmessage
diff options
context:
space:
mode:
Diffstat (limited to 'indra/llmessage')
-rw-r--r--indra/llmessage/llcircuit.cpp11
-rw-r--r--indra/llmessage/lldispatcher.cpp2
-rw-r--r--indra/llmessage/llmessagethrottle.cpp22
3 files changed, 29 insertions, 6 deletions
diff --git a/indra/llmessage/llcircuit.cpp b/indra/llmessage/llcircuit.cpp
index a39989515e..8baa2e328b 100644
--- a/indra/llmessage/llcircuit.cpp
+++ b/indra/llmessage/llcircuit.cpp
@@ -436,11 +436,12 @@ LLCircuit::LLCircuit(const F32Seconds circuit_heartbeat_interval, const F32Secon
LLCircuit::~LLCircuit()
{
- // delete pointers in the map.
- for (auto circ_pair : mCircuitData)
- {
- delete circ_pair.second;
- }
+ // delete pointers in the map.
+ std::for_each(mCircuitData.begin(),
+ mCircuitData.end(),
+ llcompose1(
+ DeletePointerFunctor<LLCircuitData>(),
+ llselect2nd<circuit_data_map::value_type>()));
}
LLCircuitData *LLCircuit::addCircuitData(const LLHost &host, TPACKETID in_id)
diff --git a/indra/llmessage/lldispatcher.cpp b/indra/llmessage/lldispatcher.cpp
index 8dfd924f31..717ef10f70 100644
--- a/indra/llmessage/lldispatcher.cpp
+++ b/indra/llmessage/lldispatcher.cpp
@@ -62,7 +62,7 @@ void LLDispatcher::copyAllHandlerNames(keys_t& names) const
mHandlers.begin(),
mHandlers.end(),
std::back_insert_iterator<keys_t>(names),
- [](const dispatch_map_t::value_type& pair){ return pair.first; });
+ llselect1st<dispatch_map_t::value_type>());
}
bool LLDispatcher::dispatch(
diff --git a/indra/llmessage/llmessagethrottle.cpp b/indra/llmessage/llmessagethrottle.cpp
index c5ae8b4547..579d6d7187 100644
--- a/indra/llmessage/llmessagethrottle.cpp
+++ b/indra/llmessage/llmessagethrottle.cpp
@@ -32,8 +32,18 @@
#include "llframetimer.h"
// This is used for the stl search_n function.
+#if _MSC_VER >= 1500 // VC9 has a bug in search_n
+struct eq_message_throttle_entry : public std::binary_function< LLMessageThrottleEntry, LLMessageThrottleEntry, bool >
+{
+ bool operator()(const LLMessageThrottleEntry& a, const LLMessageThrottleEntry& b) const
+ {
+ return a.getHash() == b.getHash();
+ }
+};
+#else
bool eq_message_throttle_entry(LLMessageThrottleEntry a, LLMessageThrottleEntry b)
{ return a.getHash() == b.getHash(); }
+#endif
const U64 SEC_TO_USEC = 1000000;
@@ -108,8 +118,14 @@ BOOL LLMessageThrottle::addViewerAlert(const LLUUID& to, const std::string& mesg
LLMessageThrottleEntry entry(hash, LLFrameTimer::getTotalTime());
// Check if this message is already in the list.
+#if _MSC_VER >= 1500 // VC9 has a bug in search_n
+ // SJB: This *should* work but has not been tested yet *TODO: Test!
+ message_list_iterator_t found = std::find_if(message_list->begin(), message_list->end(),
+ std::bind2nd(eq_message_throttle_entry(), entry));
+#else
message_list_iterator_t found = std::search_n(message_list->begin(), message_list->end(),
1, entry, eq_message_throttle_entry);
+#endif
if (found == message_list->end())
{
// This message was not found. Add it to the list.
@@ -136,8 +152,14 @@ BOOL LLMessageThrottle::addAgentAlert(const LLUUID& agent, const LLUUID& task, c
LLMessageThrottleEntry entry(hash, LLFrameTimer::getTotalTime());
// Check if this message is already in the list.
+#if _MSC_VER >= 1500 // VC9 has a bug in search_n
+ // SJB: This *should* work but has not been tested yet *TODO: Test!
+ message_list_iterator_t found = std::find_if(message_list->begin(), message_list->end(),
+ std::bind2nd(eq_message_throttle_entry(), entry));
+#else
message_list_iterator_t found = std::search_n(message_list->begin(), message_list->end(),
1, entry, eq_message_throttle_entry);
+#endif
if (found == message_list->end())
{