Port #1166 to StringAnsi

This commit is contained in:
Wojtek Figat
2023-06-13 15:04:30 +02:00
parent cc1e5873a6
commit bda71c067b

View File

@@ -43,15 +43,15 @@ void String::Set(const Char* chars, int32 length)
}
else
{
Char* alloc = nullptr;
Char* data = nullptr;
if (length != 0)
{
alloc = (Char*)Platform::Allocate((length + 1) * sizeof(Char), 16);
alloc[length] = 0;
Platform::MemoryCopy(alloc, chars, length * sizeof(Char));
data = (Char*)Platform::Allocate((length + 1) * sizeof(Char), 16);
Platform::MemoryCopy(data, chars, length * sizeof(Char));
data[length] = 0;
}
Platform::Free(_data);
_data = alloc;
_data = data;
_length = length;
}
}
@@ -363,23 +363,26 @@ StringAnsi::StringAnsi(const StringAnsiView& str)
void StringAnsi::Set(const char* chars, int32 length)
{
if (length != _length)
ASSERT(length >= 0);
if (length == _length)
{
ASSERT(length >= 0);
Platform::Free(_data);
if (_data == chars)
return;
Platform::MemoryCopy(_data, chars, length * sizeof(char));
}
else
{
char* data = nullptr;
if (length != 0)
{
_data = (char*)Platform::Allocate((length + 1) * sizeof(char), 16);
_data[length] = 0;
}
else
{
_data = nullptr;
data = (char*)Platform::Allocate((length + 1) * sizeof(char), 16);
Platform::MemoryCopy(data, chars, length * sizeof(char));
data[length] = 0;
}
Platform::Free(_data);
_data = data;
_length = length;
}
Platform::MemoryCopy(_data, chars, length * sizeof(char));
}
void StringAnsi::Set(const Char* chars, int32 length)