diff options
| author | Mark Palange (Mani) <palange@lindenlab.com> | 2009-10-02 10:35:42 -0700 |
|---|---|---|
| committer | Mark Palange (Mani) <palange@lindenlab.com> | 2009-10-02 10:35:42 -0700 |
| commit | 4d53e235c2445b820bb0ae7303b269648dd86037 (patch) | |
| tree | c1ab3643cf257099822e7a0e1e832d76813555f6 /indra/llcommon/llsdserialize_xml.cpp | |
| parent | 80f27013b2d2a7ca6509db033c8f0c31562e04c7 (diff) | |
| parent | dde2153014cd7d7b8fa704f7067a41344bfbb1c2 (diff) | |
merge of latest viewer/viewer-20
Diffstat (limited to 'indra/llcommon/llsdserialize_xml.cpp')
| -rw-r--r-- | indra/llcommon/llsdserialize_xml.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/indra/llcommon/llsdserialize_xml.cpp b/indra/llcommon/llsdserialize_xml.cpp index c12ca350de..7e1c2e35e0 100644 --- a/indra/llcommon/llsdserialize_xml.cpp +++ b/indra/llcommon/llsdserialize_xml.cpp @@ -37,6 +37,7 @@ #include <deque> #include "apr_base64.h" +#include <boost/regex.hpp> extern "C" { @@ -777,10 +778,17 @@ void LLSDXMLParser::Impl::endElementHandler(const XML_Char* name) case ELEMENT_BINARY: { - S32 len = apr_base64_decode_len(mCurrentContent.c_str()); + // Regex is expensive, but only fix for whitespace in base64, + // created by python and other non-linden systems - DEV-39358 + // Fortunately we have very little binary passing now, + // so performance impact shold be negligible. + poppy 2009-09-04 + boost::regex r; + r.assign("\\s"); + std::string stripped = boost::regex_replace(mCurrentContent, r, ""); + S32 len = apr_base64_decode_len(stripped.c_str()); std::vector<U8> data; data.resize(len); - len = apr_base64_decode_binary(&data[0], mCurrentContent.c_str()); + len = apr_base64_decode_binary(&data[0], stripped.c_str()); data.resize(len); value = data; break; |
