diff options
| author | Nat Goodspeed <nat@lindenlab.com> | 2011-11-17 13:55:11 -0500 | 
|---|---|---|
| committer | Nat Goodspeed <nat@lindenlab.com> | 2011-11-17 13:55:11 -0500 | 
| commit | bd5b1ed713506d365793c7f9cb49d506ce392e7a (patch) | |
| tree | 4b23ec0f7261ad3e0598ed139ea0d0238b822dfc /indra/llcommon | |
| parent | 570ac04e167c97553a03f283ee0683cc4648601c (diff) | |
LLSD-14: Make dumpStats()/calcStats() implementation more robust
per Monty code review
Diffstat (limited to 'indra/llcommon')
| -rw-r--r-- | indra/llcommon/llsd.cpp | 16 | 
1 files changed, 10 insertions, 6 deletions
| diff --git a/indra/llcommon/llsd.cpp b/indra/llcommon/llsd.cpp index b0801745d7..39d1f3e35f 100644 --- a/indra/llcommon/llsd.cpp +++ b/indra/llcommon/llsd.cpp @@ -732,10 +732,10 @@ const LLSD& LLSD::Impl::undef()  void LLSD::Impl::dumpStats() const  {  	S32 type_counts[LLSD::TypeLLSDNumTypes + 1]; -	memset(&type_counts, 0, LLSD::TypeLLSDNumTypes * sizeof(S32)); +	memset(&type_counts, 0, sizeof(type_counts));  	S32 share_counts[LLSD::TypeLLSDNumTypes + 1]; -	memset(&share_counts, 0, LLSD::TypeLLSDNumTypes * sizeof(S32)); +	memset(&share_counts, 0, sizeof(share_counts));  	// Add info from all the values this object has  	calcStats(type_counts, share_counts); @@ -753,11 +753,15 @@ void LLSD::Impl::dumpStats() const  void LLSD::Impl::calcStats(S32 type_counts[], S32 share_counts[]) const -{  -	type_counts[(S32) type()]++;	 -	if (shared()) +{ +	S32 type = S32(type()); +	if (0 <= type && type < LLSD::TypeLLSDNumTypes)  	{ -		share_counts[(S32) type()]++; +		type_counts[type]++;	 +		if (shared()) +		{ +			share_counts[type]++; +		}  	}  } | 
