1 /* 2 * Copyright © 2008 Kristian Høgsberg 3 * 4 * Permission is hereby granted, free of charge, to any person obtaining 5 * a copy of this software and associated documentation files (the 6 * "Software"), to deal in the Software without restriction, including 7 * without limitation the rights to use, copy, modify, merge, publish, 8 * distribute, sublicense, and/or sell copies of the Software, and to 9 * permit persons to whom the Software is furnished to do so, subject to 10 * the following conditions: 11 * 12 * The above copyright notice and this permission notice (including the 13 * next paragraph) shall be included in all copies or substantial 14 * portions of the Software. 15 * 16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 20 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 21 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 22 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 * SOFTWARE. 24 */ 25 26 #ifndef WESTON_XALLOC_H 27 #define WESTON_XALLOC_H 28 29 #ifdef __cplusplus 30 extern "C" { 31 #endif 32 33 #include <stdint.h> 34 #include <stdlib.h> 35 #include <string.h> 36 37 #include <libweston/zalloc.h> 38 39 void * 40 fail_on_null(void *p, size_t size, char *file, int32_t line); 41 42 #define xmalloc(s) (fail_on_null(malloc(s), (s), __FILE__, __LINE__)) 43 #define xzalloc(s) (fail_on_null(zalloc(s), (s), __FILE__, __LINE__)) 44 #define xstrdup(s) (fail_on_null(strdup(s), 0, __FILE__, __LINE__)) 45 #define xrealloc(p, s) (fail_on_null(realloc(p, s), (s), __FILE__, __LINE__)) 46 47 #ifdef __cplusplus 48 } 49 #endif 50 51 #endif /* WESTON_XALLOC_H */ 52