16e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 26e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim// Copyright 2006 Adobe Systems Incorporated 36e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim// All Rights Reserved. 46e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim// 56e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim// NOTICE: Adobe permits you to use, modify, and distribute this file in 66e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim// accordance with the terms of the Adobe license agreement accompanying it. 76e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 86e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 96e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/* $Id: //mondo/dng_sdk_1_4/dng_sdk/source/dng_memory.cpp#1 $ */ 106e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/* $DateTime: 2012/05/30 13:28:51 $ */ 116e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/* $Change: 832332 $ */ 126e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/* $Author: tknoll $ */ 136e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 146e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 156e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 166e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim#include "dng_memory.h" 176e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 186e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim#include "dng_bottlenecks.h" 196e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim#include "dng_exceptions.h" 206e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim#include "dng_safe_arithmetic.h" 216e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 226e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 236e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 246e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimdng_memory_data::dng_memory_data () 256e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 266e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim : fBuffer (NULL) 276e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 286e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 296e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 306e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 316e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 326e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 336e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 346e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimdng_memory_data::dng_memory_data (uint32 size) 356e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 366e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim : fBuffer (NULL) 376e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 386e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 396e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 406e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim Allocate (size); 416e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 426e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 436e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 446e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 456e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 466e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimdng_memory_data::dng_memory_data (uint32 count, std::size_t elementSize) 476e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 486e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim : fBuffer (NULL) 496e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 506e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 516e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 526e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim Allocate (count, elementSize); 536e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 546e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 556e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 566e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 576e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 586e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimdng_memory_data::~dng_memory_data () 596e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 606e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 616e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim Clear (); 626e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 636e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 646e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 656e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 666e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 676e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimvoid dng_memory_data::Allocate (uint32 size) 686e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 696e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 706e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim Clear (); 716e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 726e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim if (size) 736e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 746e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 756e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim fBuffer = (char*)malloc (size); 766e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 776e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim if (!fBuffer) 786e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 796e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 806e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim ThrowMemoryFull (); 816e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 826e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 836e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 846e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 856e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 866e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 876e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 886e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 896e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 906e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimvoid dng_memory_data::Allocate (uint32 count, std::size_t elementSize) 916e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 926e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 936e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim // Convert elementSize to a uint32. 946e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim const uint32 elementSizeAsUint32 = static_cast<uint32> (elementSize); 956e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim if (static_cast<std::size_t> (elementSizeAsUint32) != elementSize) 966e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 976e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim ThrowMemoryFull(); 986e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 996e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1006e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim // Compute required number of bytes and allocate memory. 1016e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim uint32 numBytes; 1026e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim if (!SafeUint32Mult(count, elementSizeAsUint32, &numBytes)) 1036e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 1046e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim ThrowMemoryFull(); 1056e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 1066e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim Allocate(numBytes); 1076e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1086e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 1096e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1106e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimvoid dng_memory_data::Clear () 1116e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 1126e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1136e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim if (fBuffer) 1146e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 1156e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1166e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim free (fBuffer); 1176e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1186e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim fBuffer = NULL; 1196e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1206e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 1216e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1226e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 1236e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1246e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 1256e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1266e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimdng_memory_block * dng_memory_block::Clone (dng_memory_allocator &allocator) const 1276e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 1286e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1296e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim uint32 size = LogicalSize (); 1306e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1316e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim dng_memory_block * result = allocator.Allocate (size); 1326e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1336e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim DoCopyBytes (Buffer (), result->Buffer (), size); 1346e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1356e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim return result; 1366e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1376e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 1386e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1396e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 1406e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1416e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimclass dng_malloc_block : public dng_memory_block 1426e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 1436e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1446e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim private: 1456e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1466e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim void *fMalloc; 1476e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1486e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim public: 1496e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1506e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim dng_malloc_block (uint32 logicalSize); 1516e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1526e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim virtual ~dng_malloc_block (); 1536e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1546e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim private: 1556e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1566e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim // Hidden copy constructor and assignment operator. 1576e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1586e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim dng_malloc_block (const dng_malloc_block &block); 1596e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1606e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim dng_malloc_block & operator= (const dng_malloc_block &block); 1616e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1626e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim }; 1636e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1646e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 1656e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1666e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimdng_malloc_block::dng_malloc_block (uint32 logicalSize) 1676e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1686e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim : dng_memory_block (logicalSize) 1696e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1706e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim , fMalloc (NULL) 1716e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1726e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 1736e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 174bf69c2b2c98f3a4ea44058d62a8738166037ba17Yujie Qin#if (qLinux && !defined(__ANDROID_API__)) || (defined(__ANDROID_API__) && __ANDROID_API__ >= 17) 1756e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1766e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim int err = ::posix_memalign( (void **) &fMalloc, 16, (size_t) PhysicalSize() ); 1776e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1786e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim if (err) 1796e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 1806e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1816e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim ThrowMemoryFull (); 1826e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1836e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 1846e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1856e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim#else 1866e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1876e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim fMalloc = (char*)malloc (PhysicalSize ()); 1886e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1896e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim if (!fMalloc) 1906e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 1916e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1926e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim ThrowMemoryFull (); 1936e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1946e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 1956e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1966e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim#endif 1976e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1986e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim SetBuffer (fMalloc); 1996e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2006e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 2016e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2026e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 2036e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2046e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimdng_malloc_block::~dng_malloc_block () 2056e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 2066e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2076e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim if (fMalloc) 2086e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 2096e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2106e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim free (fMalloc); 2116e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2126e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 2136e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2146e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 2156e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2166e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 2176e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2186e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimdng_memory_block * dng_memory_allocator::Allocate (uint32 size) 2196e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 2206e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2216e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim dng_memory_block *result = new dng_malloc_block (size); 2226e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2236e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim if (!result) 2246e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 2256e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2266e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim ThrowMemoryFull (); 2276e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2286e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 2296e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2306e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim return result; 2316e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2326e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 2336e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2346e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 2356e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2366e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimdng_memory_allocator gDefaultDNGMemoryAllocator; 2376e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2386e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 239