Fix allocation size overflow check in `CowData`

pull/1245/head
A Thousand Ships 2023-09-19 15:20:02 +02:00
parent 73500966ae
commit 06ffc7e952
1 changed files with 5 additions and 2 deletions

View File

@ -102,6 +102,10 @@ private:
}
_FORCE_INLINE_ bool _get_alloc_size_checked(size_t p_elements, size_t *out) const {
if (unlikely(p_elements == 0)) {
*out = 0;
return true;
}
#if defined(__GNUC__)
size_t o;
size_t p;
@ -113,13 +117,12 @@ private:
if (__builtin_add_overflow(o, static_cast<size_t>(32), &p)) {
return false; // No longer allocated here.
}
return true;
#else
// Speed is more important than correctness here, do the operations unchecked
// and hope for the best.
*out = _get_alloc_size(p_elements);
return true;
#endif
return *out;
}
void _unref(void *p_data);