diff options
author | callum_linden <callum@lindenlab.com> | 2017-12-11 10:09:44 -0800 |
---|---|---|
committer | callum_linden <callum@lindenlab.com> | 2017-12-11 10:09:44 -0800 |
commit | 5561673bf1c98c717f69e747a9e8b0d56129ef12 (patch) | |
tree | f021c5beca7aaad132c60d25881c7920a9944daf /indra/llprimitive/lldaeloader.cpp | |
parent | fe29551d9a6685bdc40e87ae135f236aec1ea475 (diff) | |
parent | c565c62745ec37484118888f8f45dbde34d42e46 (diff) |
Automated merge with tip of viewer64 *plus* update to CEF 3.3202.1686 / Dullahan 901
Diffstat (limited to 'indra/llprimitive/lldaeloader.cpp')
-rw-r--r-- | indra/llprimitive/lldaeloader.cpp | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/indra/llprimitive/lldaeloader.cpp b/indra/llprimitive/lldaeloader.cpp index 768dc8284b..8401cb976e 100644 --- a/indra/llprimitive/lldaeloader.cpp +++ b/indra/llprimitive/lldaeloader.cpp @@ -862,16 +862,26 @@ bool LLDAELoader::OpenFile(const std::string& filename) setLoadState( READING_FILE ); //no suitable slm exists, load from the .dae file + + // Collada expects file and folder names to be escaped + // Note: cdom::nativePathToUri() + const char* allowed = + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz" + "0123456789" + "%-._~:\"|\\/"; + std::string uri_filename = LLURI::escape(filename, allowed); + DAE dae; domCOLLADA* dom; if (mPreprocessDAE) { - dom = dae.openFromMemory(filename, preprocessDAE(filename).c_str()); + dom = dae.openFromMemory(uri_filename, preprocessDAE(filename).c_str()); } else { LL_INFOS() << "Skipping dae preprocessing" << LL_ENDL; - dom = dae.open(filename); + dom = dae.open(uri_filename); } if (!dom) @@ -900,7 +910,7 @@ bool LLDAELoader::OpenFile(const std::string& filename) daeInt count = db->getElementCount(NULL, COLLADA_TYPE_MESH); - daeDocument* doc = dae.getDoc(filename); + daeDocument* doc = dae.getDoc(uri_filename); if (!doc) { LL_WARNS() << "can't find internal doc" << LL_ENDL; |