Fixed StringView::GetText() related issued pointed out in review.

This commit is contained in:
Zbigniew Skowron
2021-08-09 22:21:38 +02:00
parent aecc81f5e5
commit bd70e53806
4 changed files with 10 additions and 7 deletions
+2 -2
View File
@@ -270,8 +270,8 @@ public:
explicit operator float() const;
explicit operator double() const;
explicit operator void*() const;
explicit operator StringView() const;
explicit operator StringAnsiView() const;
explicit operator StringView() const; // Returned StringView, if not empty, is guaranteed to point to a null terminated buffer.
explicit operator StringAnsiView() const; // Returned StringView, if not empty, is guaranteed to point to a null terminated buffer.
explicit operator ScriptingObject*() const;
explicit operator struct _MonoObject*() const;
explicit operator Asset*() const;
@@ -23,9 +23,12 @@ void WindowsClipboard::Clear()
void WindowsClipboard::SetText(const StringView& text)
{
const int32 size = (text.Length() + 1) * sizeof(Char);
const HGLOBAL hMem = GlobalAlloc(GMEM_MOVEABLE, size);
Platform::MemoryCopy(GlobalLock(hMem), String(text).GetText(), size);
const int32 sizeWithoutNull = text.Length() * sizeof(Char);
const HGLOBAL hMem = GlobalAlloc(GMEM_MOVEABLE, sizeWithoutNull + sizeof(Char));
Char* pMem = static_cast<Char*>(GlobalLock(hMem));
Platform::MemoryCopy(pMem, text.GetNonTerminatedText(), sizeWithoutNull);
Platform::MemorySet(pMem + text.Length(), sizeof(Char), 0);
GlobalUnlock(hMem);
OpenClipboard(nullptr);
@@ -1111,7 +1111,7 @@ int32 WindowsPlatform::RunProcess(const StringView& cmdLine, const StringView& w
// Create the process
PROCESS_INFORMATION procInfo;
if (!CreateProcessW(nullptr, const_cast<LPWSTR>(String(cmdLine).GetText()), nullptr, nullptr, TRUE, dwCreationFlags, (LPVOID)environmentStr, String(workingDir).GetText(), &startupInfoEx.StartupInfo, &procInfo))
if (!CreateProcessW(nullptr, const_cast<LPWSTR>(String(cmdLine).GetText()), nullptr, nullptr, TRUE, dwCreationFlags, (LPVOID)environmentStr, workingDir.HasChars() ? workingDir.Get() : nullptr, &startupInfoEx.StartupInfo, &procInfo))
{
LOG(Warning, "Cannot start process '{0}'. Error code: 0x{1:x}", cmdLine, static_cast<int64>(GetLastError()));
goto ERROR_EXIT;
@@ -166,7 +166,7 @@ namespace Flax.Build.Bindings
if (typeInfo.Type == "String")
return $"(StringView){value}";
if (typeInfo.IsPtr && typeInfo.IsConst && typeInfo.Type == "Char")
return $"((StringView){value}).GetNonTerminatedText()"; // This is a bug, as we need a null-terminated strig here. Any idea how to fix it?
return $"((StringView){value}).GetNonTerminatedText()"; // (StringView)Variant, if not empty, is guaranteed to point to a null-terminated buffer.
if (typeInfo.Type == "AssetReference" || typeInfo.Type == "WeakAssetReference")
return $"ScriptingObject::Cast<{typeInfo.GenericArgs[0].Type}>((Asset*){value})";
if (typeInfo.Type == "ScriptingObjectReference" || typeInfo.Type == "SoftObjectReference")