Port #1166 to StringAnsi
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user