/
niceSOFT
/
shadow
Обзор
Документация
Войти
/
niceSOFT
/
shadow
Код
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
lib/alloc/reallocf.h
48 строк
1 KB
Alejandro Colomar
lib/, src/: Rename REALLOCF() => reallocf_T()
06 дек 2025, 06:22
06 дек 2025, 06:22
3de69c9
Код
Авторство
О чём код?
// SPDX-FileCopyrightText: 2023-2025, Alejandro Colomar <alx@kernel.org> // SPDX-License-Identifier: BSD-3-Clause #ifndef SHADOW_INCLUDE_LIB_ALLOC_REALLOCF_H_ #define SHADOW_INCLUDE_LIB_ALLOC_REALLOCF_H_ #include "config.h" #include <stddef.h> #include <stdlib.h> #include "attr.h" #include "sizeof.h" // reallocf_T - realloc free-on-error type-safe #define reallocf_T(p, n, T) reallocf_T_(p, n, typeas(T)) #define reallocf_T_(p, n, T) \ ({ \ _Generic(p, T *: (void)0); \ (T *){reallocarrayf_(p, n, sizeof(T))}; \ }) #define reallocarrayf_(p, n, size) reallocarrayf(p, (n) ?: 1, (size) ?: 1) // reallocarrayf - realloc array free-on-error ATTR_ALLOC_SIZE(2, 3) ATTR_MALLOC(free) inline void *reallocarrayf(void *p, size_t nmemb, size_t size); inline void * reallocarrayf(void *p, size_t nmemb, size_t size) { void *q; q = reallocarray(p, nmemb ?: 1, size ?: 1); if (q == NULL) free(p); return q; } #endif // include guard