Branch data Line data Source code
1 : : /****************************************************************************************[XAlloc.h] 2 : : Copyright (c) 2009-2010, Niklas Sorensson 3 : : 4 : : Permission is hereby granted, free of charge, to any person obtaining a copy of 5 : : this software and associated documentation files (the "Software"), to deal in 6 : : the Software without restriction, including without limitation the rights to 7 : : use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 8 : : the Software, and to permit persons to whom the Software is furnished to do so, 9 : : subject to the following conditions: 10 : : 11 : : The above copyright notice and this permission notice shall be included in all 12 : : copies or substantial portions of the Software. 13 : : 14 : : THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 : : IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 16 : : FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 17 : : COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 18 : : IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 19 : : CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 : : **************************************************************************************************/ 21 : : 22 : : #ifndef Minisat_XAlloc_h 23 : : #define Minisat_XAlloc_h 24 : : 25 : : #include <errno.h> 26 : : #include <stdlib.h> 27 : : 28 : : namespace cvc5::internal { 29 : : namespace Minisat { 30 : : 31 : : //================================================================================================= 32 : : // Simple layer on top of malloc/realloc to catch out-of-memory situtaions and 33 : : // provide some typing: 34 : : 35 : : class OutOfMemoryException 36 : : { 37 : : }; 38 : 35537 : static inline void* xrealloc(void* ptr, size_t size) 39 : : { 40 : 35537 : void* mem = realloc(ptr, size); 41 [ - + ][ - - ]: 35537 : if (mem == nullptr && errno == ENOMEM) 42 : : { 43 : 0 : throw OutOfMemoryException(); 44 : : } 45 : : else 46 : 35537 : return mem; 47 : : } 48 : : 49 : : //================================================================================================= 50 : : } // namespace Minisat 51 : : } // namespace cvc5::internal 52 : : 53 : : #endif