diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/llcommon/llinitparam.cpp | 7 | ||||
| -rw-r--r-- | indra/llcommon/llinitparam.h | 10 | 
2 files changed, 9 insertions, 8 deletions
| diff --git a/indra/llcommon/llinitparam.cpp b/indra/llcommon/llinitparam.cpp index 451b638a3f..89c831d296 100644 --- a/indra/llcommon/llinitparam.cpp +++ b/indra/llcommon/llinitparam.cpp @@ -335,15 +335,12 @@ namespace LLInitParam  		{  			const std::string& top_name = name_stack_range.first->first; -			ParamDescriptor::deserialize_func_t deserialize_func = NULL; -			Param* paramp = NULL; -  			BlockDescriptor::param_map_t::iterator found_it = block_data.mNamedParams.find(top_name);  			if (found_it != block_data.mNamedParams.end())  			{  				// find pointer to member parameter from offset table -				paramp = getParamFromHandle(found_it->second->mParamHandle); -				deserialize_func = found_it->second->mDeserializeFunc; +				Param* paramp = getParamFromHandle(found_it->second->mParamHandle); +				ParamDescriptor::deserialize_func_t deserialize_func = found_it->second->mDeserializeFunc;  				Parser::name_stack_range_t new_name_stack(name_stack_range.first, name_stack_range.second);  				++new_name_stack.first; diff --git a/indra/llcommon/llinitparam.h b/indra/llcommon/llinitparam.h index 2f767c234e..14ba8e0b43 100644 --- a/indra/llcommon/llinitparam.h +++ b/indra/llcommon/llinitparam.h @@ -2194,7 +2194,7 @@ namespace LLInitParam  				resetToDefault();  			}  			return mValue.deserializeBlock(p, name_stack_range, new_name); -			} +		}  		void serializeBlock(Parser& p, Parser::name_stack_t& name_stack, const self_t* diff_block = NULL) const  		{ @@ -2211,12 +2211,16 @@ namespace LLInitParam  		bool mergeBlockParam(bool source_provided, bool dst_provided, BlockDescriptor& block_data, const self_t& source, bool overwrite)  		{ -			if (overwrite) +			if ((overwrite && source_provided) // new values coming in on top or... +				|| (!overwrite && !dst_provided)) // values being pushed under with nothing already there  			{ +				// clear away what is there and take the new stuff as a whole  				resetToDefault();  				return mValue.mergeBlock(block_data, source.getValue(), overwrite);  			} -			return false; +			 + +			return mValue.mergeBlock(block_data, source.getValue(), overwrite);  		}  		bool validateBlock(bool emit_errors = true) const | 
