diff options
author | Tess Chu <tess@lindenlab.com> | 2007-07-11 21:29:02 +0000 |
---|---|---|
committer | Tess Chu <tess@lindenlab.com> | 2007-07-11 21:29:02 +0000 |
commit | 57b8fef824b6d7f37c5be5812ebffa39ab2e8093 (patch) | |
tree | f89014544fc276b283a36eb2e0cb52e93806a44a /indra/llmessage/llsdmessagereader.cpp | |
parent | a6769f262ff910949a7e1c81cf98e52ddfc2d44a (diff) |
svn merge --ignore-ancestry svn+ssh://svn/svn/linden/release@65088 svn+ssh://svn/svn/linden/branches/release-candidate@65078 -> release Paired by Tess and rdw.
Diffstat (limited to 'indra/llmessage/llsdmessagereader.cpp')
-rwxr-xr-x | indra/llmessage/llsdmessagereader.cpp | 48 |
1 files changed, 41 insertions, 7 deletions
diff --git a/indra/llmessage/llsdmessagereader.cpp b/indra/llmessage/llsdmessagereader.cpp index 6312bee0ab..889cb305c2 100755 --- a/indra/llmessage/llsdmessagereader.cpp +++ b/indra/llmessage/llsdmessagereader.cpp @@ -1,7 +1,18 @@ +/** + * @file llsdmessagereader.cpp + * @brief LLSDMessageReader class implementation. + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#include "linden_common.h" + #include "llsdmessagereader.h" -#include "llsdutil.h" + #include "llmessagebuilder.h" #include "llsdmessagebuilder.h" +#include "llsdutil.h" LLSDMessageReader::LLSDMessageReader() { @@ -15,11 +26,30 @@ LLSDMessageReader::~LLSDMessageReader() LLSD getLLSD(const LLSD& input, const char* block, const char* var, S32 blocknum) { - if(input[block].isArray()) + // babbage: log error to llerrs if variable not found to mimic + // LLTemplateMessageReader::getData behaviour + if(NULL == block) + { + llerrs << "NULL block name" << llendl; + return LLSD(); + } + if(NULL == var) + { + llerrs << "NULL var name" << llendl; + return LLSD(); + } + if(! input[block].isArray()) + { + llerrs << "block " << block << " not found" << llendl; + return LLSD(); + } + + LLSD result = input[block][blocknum][var]; + if(result.isUndefined()) { - return input[block][blocknum][var]; + llerrs << "var " << var << " not found" << llendl; } - return LLSD(); + return result; } //virtual @@ -167,8 +197,12 @@ void LLSDMessageReader::getIPPort(const char *block, const char *var, void LLSDMessageReader::getString(const char *block, const char *var, S32 buffer_size, char *buffer, S32 blocknum) { + if(buffer_size <= 0) + { + llwarns << "buffer_size <= 0" << llendl; + return; + } std::string data = getLLSD(mMessage, block, var, blocknum); - S32 data_size = data.size(); if (data_size >= buffer_size) { @@ -241,7 +275,7 @@ void LLSDMessageReader::clearMessage() //virtual const char* LLSDMessageReader::getMessageName() const { - return mMessageName.c_str(); + return mMessageName; } // virtual @@ -256,7 +290,7 @@ void LLSDMessageReader::copyToBuilder(LLMessageBuilder& builder) const builder.copyFromLLSD(mMessage); } -void LLSDMessageReader::setMessage(const std::string& name, const LLSD& message) +void LLSDMessageReader::setMessage(const char* name, const LLSD& message) { mMessageName = name; // TODO: Validate |