aboutsummaryrefslogtreecommitdiff
path: root/engines/tony/mpal/memory.cpp
diff options
context:
space:
mode:
authorPaul Gilbert2012-05-05 00:29:44 +1000
committerPaul Gilbert2012-05-05 00:29:44 +1000
commita511b828e416c657e01a86e931016d4a4b7d49b9 (patch)
tree0ff9f981c3da69efbd6b54bbde9753fdee175504 /engines/tony/mpal/memory.cpp
parent5ab27cdacd0b93e4c1de613833edf1894820d2b4 (diff)
downloadscummvm-rg350-a511b828e416c657e01a86e931016d4a4b7d49b9.tar.gz
scummvm-rg350-a511b828e416c657e01a86e931016d4a4b7d49b9.tar.bz2
scummvm-rg350-a511b828e416c657e01a86e931016d4a4b7d49b9.zip
TONY: Initial fixes for some of the Valgrind reported errors
Diffstat (limited to 'engines/tony/mpal/memory.cpp')
-rw-r--r--engines/tony/mpal/memory.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/engines/tony/mpal/memory.cpp b/engines/tony/mpal/memory.cpp
index de6e918a38..166e3598f8 100644
--- a/engines/tony/mpal/memory.cpp
+++ b/engines/tony/mpal/memory.cpp
@@ -21,6 +21,7 @@
*
*/
+#include "common/algorithm.h"
#include "common/textconsole.h"
#include "tony/mpal/memory.h"
@@ -77,8 +78,13 @@ MemoryManager::~MemoryManager() {
* Allocates a new memory block
* @returns Returns a MemoryItem instance for the new block
*/
-MemoryItem &MemoryManager::allocate(uint32 size) {
+MemoryItem &MemoryManager::allocate(uint32 size, uint flags) {
MemoryItem *newItem = new MemoryItem(size);
+ if ((flags & GMEM_ZEROINIT) != 0) {
+ byte *dataP = (byte *)newItem->DataPointer();
+ Common::fill(dataP, dataP + size, 0);
+ }
+
_memoryBlocks.push_back(newItem);
return *newItem;
@@ -88,8 +94,8 @@ MemoryItem &MemoryManager::allocate(uint32 size) {
* Allocates a new memory block and returns it's data pointer
* @returns Data pointer to allocated block
*/
-HGLOBAL MemoryManager::alloc(uint32 size) {
- MemoryItem &newItem = allocate(size);
+HGLOBAL MemoryManager::alloc(uint32 size, uint flags) {
+ MemoryItem &newItem = allocate(size, flags);
return (HGLOBAL)newItem.DataPointer();
}