Fix issue 2307
In case sso use memmove to avoid memory overlapping issues
This commit is contained in:
parent
7c73dd7de7
commit
805d7ed5df
@ -2445,13 +2445,14 @@ private:
|
|||||||
data_.f.flags = kShortStringFlag;
|
data_.f.flags = kShortStringFlag;
|
||||||
data_.ss.SetLength(s.length);
|
data_.ss.SetLength(s.length);
|
||||||
str = data_.ss.str;
|
str = data_.ss.str;
|
||||||
|
std::memmove(str, s, s.length * sizeof(Ch));
|
||||||
} else {
|
} else {
|
||||||
data_.f.flags = kCopyStringFlag;
|
data_.f.flags = kCopyStringFlag;
|
||||||
data_.s.length = s.length;
|
data_.s.length = s.length;
|
||||||
str = static_cast<Ch *>(allocator.Malloc((s.length + 1) * sizeof(Ch)));
|
str = static_cast<Ch *>(allocator.Malloc((s.length + 1) * sizeof(Ch)));
|
||||||
SetStringPointer(str);
|
SetStringPointer(str);
|
||||||
|
std::memcpy(str, s, s.length * sizeof(Ch));
|
||||||
}
|
}
|
||||||
std::memcpy(str, s, s.length * sizeof(Ch));
|
|
||||||
str[s.length] = '\0';
|
str[s.length] = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user