diff options
| author | Logan Dethrow <log@lindenlab.com> | 2013-04-01 20:10:39 -0400 | 
|---|---|---|
| committer | Logan Dethrow <log@lindenlab.com> | 2013-04-01 20:10:39 -0400 | 
| commit | 9927963ac9d7ef19db96e8d5ffa04c04d0e3b803 (patch) | |
| tree | db2427d20db6286cb87b92e2ac9ca6989e798039 | |
| parent | 298660a5f15e08ef00c240330553f3228db5437f (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.cpp | 13 | 
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();  	} | 
