summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLogan Dethrow <log@lindenlab.com>2013-04-01 20:10:39 -0400
committerLogan Dethrow <log@lindenlab.com>2013-04-01 20:10:39 -0400
commit9927963ac9d7ef19db96e8d5ffa04c04d0e3b803 (patch)
treedb2427d20db6286cb87b92e2ac9ca6989e798039
parent298660a5f15e08ef00c240330553f3228db5437f (diff)
If we get more caps from a subsequent grant for a region, go ahead and use them. This is a hack that should be safe to remove after SH-3895 is fixed everywhere on the sim side.
-rw-r--r--indra/newview/llviewerregion.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index 223f754c2e..f4b6ff318b 100644
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -347,12 +347,23 @@ private:
// ++iter;
//}
- regionp->getRegionImplNC()->mSecondCapabilitiesTracker.clear();
+ if (regionp->getRegionImpl()->mSecondCapabilitiesTracker.size() > regionp->getRegionImpl()->mCapabilities.size() )
+ {
+ // *HACK Since we were granted more base capabilities in this grant request than the initial, replace
+ // the old with the new. This shouldn't happen i.e. we should always get the same capabilities from a
+ // sim. The simulator fix from SH-3895 should prevent it from happening, at least in the case of the
+ // inventory api capability grants.
+
+ // Need to clear a std::map before copying into it because old keys take precedence.
+ regionp->getRegionImplNC()->mCapabilities.clear();
+ regionp->getRegionImplNC()->mCapabilities = regionp->getRegionImpl()->mSecondCapabilitiesTracker;
+ }
}
else
{
LL_DEBUGS("CrossingCaps") << "Sim sent multiple base cap grants with matching sizes." << LL_ENDL;
}
+ regionp->getRegionImplNC()->mSecondCapabilitiesTracker.clear();
}