FFIString::make_ffistring (const unsigned char *data, std::uint64_t len)
{
unsigned char *inner = new unsigned char[len];
- std::memcpy (inner, data, len);
+ // FIXME: UTF-8 Update this with sizeof codepoint instead
+ std::memcpy (inner, data, len * sizeof (unsigned char));
return {inner, len};
}
FFIString::clone () const
{
unsigned char *inner = new unsigned char[this->len];
- std::memcpy (inner, this->data, this->len);
+ // FIXME: UTF-8 Update this with sizeof codepoint instead
+ std::memcpy (inner, this->data, this->len * sizeof (unsigned char));
return {inner, this->len};
}
Ident::clone () const
{
unsigned char *val = new unsigned char[this->len];
- std::memcpy (val, this->val, this->len);
- return {this->is_raw, val, this->len, this->span};
+ // FIXME: UTF-8 Update this with sizeof codepoint instead
+ std::memcpy (val, this->val, this->len * sizeof (char));
+ return {this->is_raw, val, this->len};
}
Ident
bool raw)
{
unsigned char *val = new unsigned char[len];
- std::memcpy (val, str, len);
- return {raw, val, len, span};
+ // FIXME: UTF-8 Update this with sizeof codepoint instead
+ std::memcpy (val, str, len * sizeof (char));
+ return {raw, val, len};
}
void
auto new_capacity = capacity + (delta != 0 ? delta : 1);
auto *new_data = new TokenTree[new_capacity];
capacity = new_capacity;
- std::memcpy (new_data, data, size);
+ std::memcpy (new_data, data, size * sizeof (TokenTree));
delete[] data;
data = new_data;
}
TokenStream__clone (const TokenStream *ts)
{
auto *data = new TokenTree[ts->capacity];
- std::memcpy (data, ts->data, ts->size);
+ std::memcpy (data, ts->data, ts->size * sizeof (TokenTree));
return {data, ts->size, ts->capacity};
}