1 /* 2 * nghttp3 3 * 4 * Copyright (c) 2019 nghttp3 contributors 5 * Copyright (c) 2017 ngtcp2 contributors 6 * Copyright (c) 2014 nghttp2 contributors 7 * 8 * Permission is hereby granted, free of charge, to any person obtaining 9 * a copy of this software and associated documentation files (the 10 * "Software"), to deal in the Software without restriction, including 11 * without limitation the rights to use, copy, modify, merge, publish, 12 * distribute, sublicense, and/or sell copies of the Software, and to 13 * permit persons to whom the Software is furnished to do so, subject to 14 * the following conditions: 15 * 16 * The above copyright notice and this permission notice shall be 17 * included in all copies or substantial portions of the Software. 18 * 19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 20 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 21 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 22 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 23 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 24 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 25 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 26 */ 27 #ifndef NGHTTP3_MEM_H 28 #define NGHTTP3_MEM_H 29 30 #ifdef HAVE_CONFIG_H 31 # include <config.h> 32 #endif /* HAVE_CONFIG_H */ 33 34 #include <nghttp3/nghttp3.h> 35 36 /* Convenient wrapper functions to call allocator function in 37 |mem|. */ 38 #ifndef MEMDEBUG 39 void *nghttp3_mem_malloc(const nghttp3_mem *mem, size_t size); 40 void nghttp3_mem_free(const nghttp3_mem *mem, void *ptr); 41 void *nghttp3_mem_calloc(const nghttp3_mem *mem, size_t nmemb, size_t size); 42 void *nghttp3_mem_realloc(const nghttp3_mem *mem, void *ptr, size_t size); 43 #else /* MEMDEBUG */ 44 void *nghttp3_mem_malloc_debug(const nghttp3_mem *mem, size_t size, 45 const char *func, const char *file, size_t line); 46 47 # define nghttp3_mem_malloc(MEM, SIZE) \ 48 nghttp3_mem_malloc_debug((MEM), (SIZE), __func__, __FILE__, __LINE__) 49 50 void nghttp3_mem_free_debug(const nghttp3_mem *mem, void *ptr, const char *func, 51 const char *file, size_t line); 52 53 # define nghttp3_mem_free(MEM, PTR) \ 54 nghttp3_mem_free_debug((MEM), (PTR), __func__, __FILE__, __LINE__) 55 56 void nghttp3_mem_free2_debug(nghttp3_free free_func, void *ptr, void *user_data, 57 const char *func, const char *file, size_t line); 58 59 # define nghttp3_mem_free2(FREE_FUNC, PTR, USER_DATA) \ 60 nghttp3_mem_free2_debug((FREE_FUNC), (PTR), (USER_DATA), __func__, \ 61 __FILE__, __LINE__) 62 63 void *nghttp3_mem_calloc_debug(const nghttp3_mem *mem, size_t nmemb, 64 size_t size, const char *func, const char *file, 65 size_t line); 66 67 # define nghttp3_mem_calloc(MEM, NMEMB, SIZE) \ 68 nghttp3_mem_calloc_debug((MEM), (NMEMB), (SIZE), __func__, __FILE__, \ 69 __LINE__) 70 71 void *nghttp3_mem_realloc_debug(const nghttp3_mem *mem, void *ptr, size_t size, 72 const char *func, const char *file, 73 size_t line); 74 75 # define nghttp3_mem_realloc(MEM, PTR, SIZE) \ 76 nghttp3_mem_realloc_debug((MEM), (PTR), (SIZE), __func__, __FILE__, \ 77 __LINE__) 78 #endif /* MEMDEBUG */ 79 80 #endif /* NGHTTP3_MEM_H */ 81