Branch data Line data Source code
1 : : #ifndef XMALLOC_H 2 : : #define XMALLOC_H 3 : : 4 : : #include <stdarg.h> 5 : : #include <stdio.h> 6 : : #include <stdlib.h> 7 : : #include <string.h> 8 : : 9 : 8458 : static inline void *xmalloc(size_t size) 10 : : { 11 : 8458 : void *ptr = malloc(size); 12 [ + + ]: 8458 : if (ptr == NULL) 13 : 0 : abort(); 14 : 8458 : return (ptr); 15 : : } 16 : : 17 : 28792 : static inline void *xcalloc(size_t n, size_t size) 18 : : { 19 : 28792 : void *ptr = calloc(n, size); 20 [ + + ]: 28792 : if (ptr == NULL) 21 : 0 : abort(); 22 : 28792 : return (ptr); 23 : : } 24 : : 25 : 32 : static inline void *xrealloc(void *ptr, size_t size) 26 : : { 27 : 32 : ptr = realloc(ptr, size); 28 [ + - ]: 32 : if (ptr == NULL) 29 : 0 : abort(); 30 : 32 : return (ptr); 31 : : } 32 : : 33 : 104266 : static inline char *xstrdup(const char *str) 34 : : { 35 : 104266 : char *s = strdup(str); 36 [ + + ]: 104266 : if (s == NULL) 37 : 0 : abort(); 38 : 104266 : return (s); 39 : : } 40 : : 41 : 14 : static inline char *xstrndup(const char *str, size_t n) 42 : : { 43 : 14 : char *s = strndup(str, n); 44 [ + - ]: 14 : if (s == NULL) 45 : 0 : abort(); 46 : 14 : return (s); 47 : : } 48 : : 49 : 48514 : static inline int xasprintf(char **ret, const char *fmt, ...) 50 : : { 51 : : va_list ap; 52 : : int i; 53 : : 54 : 48514 : va_start(ap, fmt); 55 : 48514 : i = vasprintf(ret, fmt, ap); 56 : 48514 : va_end(ap); 57 : : 58 [ + - ]: 48514 : if (i < 0 || *ret == NULL) 59 : 0 : abort(); 60 : : 61 : 48514 : return (i); 62 : : } 63 : : #endif