diff options
author | Adam Moss <moss@lindenlab.com> | 2009-05-04 17:43:26 +0000 |
---|---|---|
committer | Adam Moss <moss@lindenlab.com> | 2009-05-04 17:43:26 +0000 |
commit | cc92525b0df952659102d2e5adcc4140fea7f371 (patch) | |
tree | ee1a9b63decb3667fb740a8c9b70bcfdbf9a054b /indra/llmessage/lldispatcher.cpp | |
parent | 4bcbf3342284b19ff5fbda5a16a43a8cafb3baad (diff) |
QAR-1476 Combo-merge to trunk: Viewer 1.23 RC0 and Simulator 1.26.3
svn merge -r118927:118939
svn+ssh://svn.lindenlab.com/svn/linden/branches/viewer/viewer-1.23.0-merge-2-combo-QAR-1476
this is a composite of...
svn merge -r115088:118182
svn+ssh://svn.lindenlab.com/svn/linden/branches/viewer/viewer_1-23
conflicts resolved:
C doc/contributions.txt
C indra/llaudio/audioengine.cpp
C indra/newview/CMakeLists.txt
C indra/newview/llfloaterlandholdings.cpp
C indra/newview/llpaneldirbrowser.cpp
C indra/newview/llpanelgrouplandmoney.cpp
C indra/newview/llpreviewscript.cpp
C indra/newview/llviewermenu.cpp
C indra/newview/skins/default/xui/en-us/notifications.xml
and...
svn merge -r116937:118673
svn+ssh://svn.lindenlab.com/svn/linden/branches/server/server-1.26
minor-to-trivial conflicts resolved:
C indra/llcommon/llversionserver.h
C indra/newsim/llrezdata.cpp
C indra/newsim/llstate.cpp
C indra/upgrade/schema_version/sequence/3/index_log_paypal.sql
Diffstat (limited to 'indra/llmessage/lldispatcher.cpp')
-rw-r--r-- | indra/llmessage/lldispatcher.cpp | 47 |
1 files changed, 25 insertions, 22 deletions
diff --git a/indra/llmessage/lldispatcher.cpp b/indra/llmessage/lldispatcher.cpp index bb7c833b49..6632fbb67e 100644 --- a/indra/llmessage/lldispatcher.cpp +++ b/indra/llmessage/lldispatcher.cpp @@ -121,29 +121,32 @@ bool LLDispatcher::unpackMessage( // we treat the SParam as binary data (since it might be an // LLUUID in compressed form which may have embedded \0's,) size = msg->getSizeFast(_PREHASH_ParamList, i, _PREHASH_Parameter); - msg->getBinaryDataFast( - _PREHASH_ParamList, _PREHASH_Parameter, - buf, size, i, MAX_STRING-1); - - // If the last byte of the data is 0x0, this is either a normally - // packed string, or a binary packed UUID (which for these messages - // are packed with a 17th byte 0x0). Unpack into a std::string - // without the trailing \0, so "abc\0" becomes std::string("abc", 3) - // which matches const char* "abc". - if (size > 0 - && buf[size-1] == 0x0) - { - // special char*/size constructor because UUIDs may have embedded - // 0x0 bytes. - std::string binary_data(buf, size-1); - parameters.push_back(binary_data); - } - else + if (size >= 0) { - // This is either a NULL string, or a string that was packed - // incorrectly as binary data, without the usual trailing '\0'. - std::string string_data(buf, size); - parameters.push_back(string_data); + msg->getBinaryDataFast( + _PREHASH_ParamList, _PREHASH_Parameter, + buf, size, i, MAX_STRING-1); + + // If the last byte of the data is 0x0, this is either a normally + // packed string, or a binary packed UUID (which for these messages + // are packed with a 17th byte 0x0). Unpack into a std::string + // without the trailing \0, so "abc\0" becomes std::string("abc", 3) + // which matches const char* "abc". + if (size > 0 + && buf[size-1] == 0x0) + { + // special char*/size constructor because UUIDs may have embedded + // 0x0 bytes. + std::string binary_data(buf, size-1); + parameters.push_back(binary_data); + } + else + { + // This is either a NULL string, or a string that was packed + // incorrectly as binary data, without the usual trailing '\0'. + std::string string_data(buf, size); + parameters.push_back(string_data); + } } } return true; |