From e4e6f2f68a9fbe3ed7d63e676f1497a7fbd4e540 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Sat, 5 Nov 2016 23:11:57 +0100 Subject: [PATCH] Ensure all memory allocated with Memory is valid --- src/core/Memory.hpp | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/src/core/Memory.hpp b/src/core/Memory.hpp index 761bd6b801..f763cf36b4 100644 --- a/src/core/Memory.hpp +++ b/src/core/Memory.hpp @@ -27,45 +27,57 @@ namespace Memory template T * Allocate() { - return (T*)malloc(sizeof(T)); + T* result = (T*)malloc(sizeof(T)); + Guard::ArgumentNotNull(result); + return result; } template T * Allocate(size_t size) { - return (T*)malloc(size); + T* result = (T*)malloc(size); + Guard::ArgumentNotNull(result); + return result; } template T * AllocateArray(size_t count) { - return (T*)malloc(count * sizeof(T)); + T* result = (T*)malloc(count * sizeof(T)); + Guard::ArgumentNotNull(result); + return result; } template T * Reallocate(T * ptr, size_t size) { + T* result; if (ptr == nullptr) { - return (T*)malloc(size); + result = (T*)malloc(size); } else { - return (T*)realloc((void*)ptr, size); + result = (T*)realloc((void*)ptr, size); } + Guard::ArgumentNotNull(result); + return result; } template T * ReallocateArray(T * ptr, size_t count) { + T* result; if (ptr == nullptr) { - return (T*)malloc(count * sizeof(T)); + result = (T*)malloc(count * sizeof(T)); } else { - return (T*)realloc((void*)ptr, count * sizeof(T)); + result = (T*)realloc((void*)ptr, count * sizeof(T)); } + Guard::ArgumentNotNull(result); + return result; } template @@ -92,7 +104,11 @@ namespace Memory T * Move(T * dst, const T * src, size_t size) { if (size == 0) return (T*)dst; - return (T*)memmove((void*)dst, (const void*)src, size); + Guard::ArgumentNotNull(dst); + Guard::ArgumentNotNull(src); + T* result =(T*)memmove((void*)dst, (const void*)src, size); + Guard::ArgumentNotNull(result); + return result; } template