diff --git a/src/lib/tvgArray.h b/src/lib/tvgArray.h index fad99bd0..e1f494bb 100644 --- a/src/lib/tvgArray.h +++ b/src/lib/tvgArray.h @@ -43,12 +43,14 @@ struct Array data[count++] = element; } - void reserve(uint32_t size) + bool reserve(uint32_t size) { if (size > reserved) { reserved = size; data = static_cast(realloc(data, sizeof(T) * reserved)); + if (!data) return false; } + return true; } void pop() diff --git a/src/lib/tvgCanvas.cpp b/src/lib/tvgCanvas.cpp index 309e2059..d09ff7a2 100644 --- a/src/lib/tvgCanvas.cpp +++ b/src/lib/tvgCanvas.cpp @@ -38,7 +38,7 @@ Canvas::~Canvas() Result Canvas::reserve(uint32_t n) noexcept { - pImpl->paints.reserve(n); + if (!pImpl->paints.reserve(n)) return Result::FailedAllocation; return Result::Success; }