From f0ecc670ef21257f5cb11e8278880b7448c260f6 Mon Sep 17 00:00:00 2001 From: Hermet Park Date: Mon, 7 Jun 2021 20:04:39 +0900 Subject: [PATCH] common canvas: return FailedAllocation if it really failed at memory allocation. This fixes SwCanvasBase Reservation Unit Test. --- src/lib/tvgArray.h | 4 +++- src/lib/tvgCanvas.cpp | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) 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; }