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