From 0b4806b354c422fa31cd4f3469755c643cce8ea3 Mon Sep 17 00:00:00 2001 From: Deukhoofd Date: Fri, 18 Mar 2022 00:38:38 +0100 Subject: [PATCH] Fixes Windows not reading files properly. --- BuildLibrary.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/BuildLibrary.cpp b/BuildLibrary.cpp index 31ed2f7..6cbab02 100644 --- a/BuildLibrary.cpp +++ b/BuildLibrary.cpp @@ -95,7 +95,17 @@ BattleLibrary* BuildLibrary::Build(const std::string& pathString, continue; std::ifstream in(dirEntry.path()); std::string contents((std::istreambuf_iterator(in)), std::istreambuf_iterator()); - asScriptResolver->CreateScript((const char*)dirEntry.path().c_str(), contents.c_str()); + const auto* p = dirEntry.path().c_str(); + // Windows defines paths as widechars, so we need to convert it to a normal human const char* +#if WINDOWS + std::mbstate_t state = std::mbstate_t(); + int textLen = 1 + std::wcsrtombs(NULL, &p, 0, &state); + std::vector storeTextBuffer(textLen); + std::wcsrtombs(&storeTextBuffer[0], &p, textLen, &state); + asScriptResolver->CreateScript(&storeTextBuffer[0], contents.c_str()); +#else + asScriptResolver->CreateScript(p, contents.c_str()); +#endif } asScriptResolver->FinalizeModule(); ScriptsTimeMs =