summaryrefslogtreecommitdiff
path: root/indra/llui
diff options
context:
space:
mode:
authorNat Goodspeed <nat@lindenlab.com>2024-04-03 12:31:43 -0400
committerNat Goodspeed <nat@lindenlab.com>2024-04-03 12:31:43 -0400
commite399b02e3306a249cb161f07cac578d3f2617bab (patch)
tree7cb453600a066cde4b90cec3cc2cf7dd0e62ea84 /indra/llui
parent3b25bc10febc84f10348715dabc9590458923c0b (diff)
Introduce fsyspath subclass of std::filesystem::path.
Our std::strings are UTF-8 encoded, so conversion from std::string to std::filesystem::path must use UTF-8 decoding. The native Windows std::filesystem::path constructor and assignment operator accepting std::string use "native narrow encoding," which mangles path strings containing UTF-8 encoded non-ASCII characters. fsyspath's std::string constructor and assignment operator explicitly engage std::filesystem::u8path() to handle encoding. u8path() is deprecated in C++20, but once we adapt fsyspath's conversion to C++20 conventions, consuming code need not be modified.
Diffstat (limited to 'indra/llui')
-rw-r--r--indra/llui/llluafloater.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/indra/llui/llluafloater.cpp b/indra/llui/llluafloater.cpp
index 268075b05d..e584a67a00 100644
--- a/indra/llui/llluafloater.cpp
+++ b/indra/llui/llluafloater.cpp
@@ -26,7 +26,7 @@
#include "llluafloater.h"
-#include <filesystem>
+#include "fsyspath.h"
#include "llevents.h"
#include "llcheckboxctrl.h"
@@ -271,12 +271,12 @@ void LLLuaFloater::postEvent(LLSD data, const std::string &event_name)
void LLLuaFloater::showLuaFloater(const LLSD &data)
{
- std::filesystem::path fs_path(data["xml_path"].asString());
- std::string path = fs_path.lexically_normal().string();
+ fsyspath fs_path(data["xml_path"].asString());
+ std::string path = fs_path.lexically_normal().u8string();
if (!fs_path.is_absolute())
{
std::string lib_path = gDirUtilp->getExpandedFilename(LL_PATH_SCRIPTS, "lua");
- path = (std::filesystem::path(lib_path) / path).u8string();
+ path = (fsyspath(lib_path) / path).u8string();
}
LLLuaFloater *floater = new LLLuaFloater(data);