|
11 | 11 |
|
12 | 12 | #define NO_DISCARD __attribute__((warn_unused_result)) |
13 | 13 |
|
| 14 | +#define MALLOC_ATTR __attribute__((malloc)) |
| 15 | +#define ALLOC_SIZE __attribute__((alloc_size(1))) |
| 16 | +#define CALLOC_SIZE __attribute__((alloc_size(1, 2))) |
| 17 | +#define REALLOC_SIZE __attribute__((alloc_size(2))) |
| 18 | +#define ZONE_ALLOC_SIZE __attribute__((alloc_size(2))) |
| 19 | + |
14 | 20 | typedef void iso_alloc_zone_handle; |
15 | 21 |
|
16 | 22 | #if CPP_SUPPORT |
17 | 23 | extern "C" { |
18 | 24 | #endif |
19 | | -EXTERNAL_API NO_DISCARD void *iso_alloc(size_t size); |
20 | | -EXTERNAL_API NO_DISCARD void *iso_calloc(size_t nmemb, size_t size); |
| 25 | +EXTERNAL_API NO_DISCARD MALLOC_ATTR ALLOC_SIZE void *iso_alloc(size_t size); |
| 26 | +EXTERNAL_API NO_DISCARD MALLOC_ATTR CALLOC_SIZE void *iso_calloc(size_t nmemb, size_t size); |
| 27 | +EXTERNAL_API NO_DISCARD MALLOC_ATTR REALLOC_SIZE void *iso_realloc(void *p, size_t size); |
21 | 28 | EXTERNAL_API void iso_free(void *p); |
22 | 29 | EXTERNAL_API void iso_free_permanently(void *p); |
23 | | -EXTERNAL_API NO_DISCARD void *iso_realloc(void *p, size_t size); |
24 | 30 | EXTERNAL_API size_t iso_chunksz(void *p); |
25 | 31 | EXTERNAL_API NO_DISCARD char *iso_strdup(const char *str); |
26 | 32 | EXTERNAL_API NO_DISCARD char *iso_strdup_from_zone(iso_alloc_zone_handle *zone, const char *str); |
27 | 33 | EXTERNAL_API NO_DISCARD char *iso_strndup(const char *str, size_t n); |
28 | 34 | EXTERNAL_API NO_DISCARD char *iso_strndup_from_zone(iso_alloc_zone_handle *zone, const char *str, size_t n); |
29 | | -EXTERNAL_API NO_DISCARD iso_alloc_zone_handle *iso_alloc_from_zone(iso_alloc_zone_handle *zone, size_t size); |
| 35 | +EXTERNAL_API NO_DISCARD MALLOC_ATTR ZONE_ALLOC_SIZE iso_alloc_zone_handle *iso_alloc_from_zone(iso_alloc_zone_handle *zone, size_t size); |
30 | 36 | EXTERNAL_API NO_DISCARD iso_alloc_zone_handle *iso_alloc_new_zone(size_t size); |
31 | 37 | EXTERNAL_API void iso_alloc_destroy_zone(iso_alloc_zone_handle *zone); |
32 | 38 | EXTERNAL_API void iso_alloc_protect_root(); |
|
0 commit comments