Fixed issue with ImGui corrupting strings passed to managed data.

This commit is contained in:
Kah Wei 2023-03-05 12:17:19 +08:00
parent e75b20f36b
commit 24f09ab537
2 changed files with 8 additions and 3 deletions

View File

@ -308,7 +308,7 @@ namespace SHADE
const bool CHANGED = ImGui::InputText("##", &buffer[0], TEXT_FIELD_MAX_LENGTH);
if (CHANGED)
{
value = std::string(buffer.data(), buffer.data() + TEXT_FIELD_MAX_LENGTH);
value = std::string(buffer.data(), buffer.data() + std::strlen(buffer.data()));
}
return CHANGED;
}

View File

@ -91,12 +91,17 @@ namespace SHADE
{
if (str == nullptr)
return "";
return msclr::interop::marshal_as<std::string>(str);
std::string s = msclr::interop::marshal_as<std::string>(str);
s.substr(0, str->Length);
return s;
}
System::String^ Convert::ToCLI(const std::string& str)
{
return msclr::interop::marshal_as<System::String^>(str);
if (str.empty())
return "";
return msclr::interop::marshal_as<System::String^>(str)->Substring(0, str.length());
}
/*---------------------------------------------------------------------------------*/