Fix string init with 0 sized literal crash
This commit is contained in:
parent
b8aee7cef9
commit
47bf005dbf
14
dqn.h
14
dqn.h
@ -5474,13 +5474,19 @@ bool DqnString::InitSize(i32 size, DqnMemAPI *const api)
|
||||
}
|
||||
else
|
||||
#endif
|
||||
if (size == 0)
|
||||
{
|
||||
this->str = nullptr;
|
||||
}
|
||||
else
|
||||
{
|
||||
size_t allocSize = sizeof(*(this->str)) * (size + 1);
|
||||
this->str = (char *)api->Alloc(allocSize, /*zeroClear*/false);
|
||||
if (!this->str) return false;
|
||||
}
|
||||
|
||||
this->str[0] = 0;
|
||||
}
|
||||
|
||||
this->max = size;
|
||||
this->len = 0;
|
||||
this->memAPI = api;
|
||||
@ -5518,7 +5524,11 @@ bool DqnString::InitLiteral(char const *const cstr, i32 const lenInBytes, DqnMem
|
||||
return false;
|
||||
}
|
||||
|
||||
if (lenInBytes > 0)
|
||||
{
|
||||
this->str[lenInBytes] = 0;
|
||||
}
|
||||
|
||||
this->len = lenInBytes;
|
||||
this->max = this->len;
|
||||
DqnMem_Copy(this->str, cstr, lenInBytes);
|
||||
@ -5530,7 +5540,9 @@ bool DqnString::InitLiteral(char const *const cstr, DqnMemAPI *const api)
|
||||
{
|
||||
i32 utf8LenInBytes = 0;
|
||||
DqnStr_LenUTF8((u32 *)cstr, &utf8LenInBytes);
|
||||
|
||||
bool result = this->InitLiteral(cstr, utf8LenInBytes, api);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user