From 31e72718ee54867accf0b739a24adc86f8b7ab54 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Thu, 15 Feb 2024 12:18:35 +0300 Subject: libtox update --- protocols/Tox/libtox/src/toxcore/mem.c | 89 ++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 protocols/Tox/libtox/src/toxcore/mem.c (limited to 'protocols/Tox/libtox/src/toxcore/mem.c') diff --git a/protocols/Tox/libtox/src/toxcore/mem.c b/protocols/Tox/libtox/src/toxcore/mem.c new file mode 100644 index 0000000000..bddc335b82 --- /dev/null +++ b/protocols/Tox/libtox/src/toxcore/mem.c @@ -0,0 +1,89 @@ +/* SPDX-License-Identifier: GPL-3.0-or-later + * Copyright © 2016-2018 The TokTok team. + * Copyright © 2013 Tox project. + */ + +#include "mem.h" + +#include + +#include "attributes.h" +#include "ccompat.h" + +nullable(1) +static void *sys_malloc(void *obj, uint32_t size) +{ + return malloc(size); +} + +nullable(1) +static void *sys_calloc(void *obj, uint32_t nmemb, uint32_t size) +{ + return calloc(nmemb, size); +} + +nullable(1, 2) +static void *sys_realloc(void *obj, void *ptr, uint32_t size) +{ + return realloc(ptr, size); +} + +nullable(1, 2) +static void sys_free(void *obj, void *ptr) +{ + free(ptr); +} + +static const Memory_Funcs os_memory_funcs = { + sys_malloc, + sys_calloc, + sys_realloc, + sys_free, +}; +static const Memory os_memory_obj = {&os_memory_funcs}; + +const Memory *os_memory(void) +{ + return &os_memory_obj; +} + +void *mem_balloc(const Memory *mem, uint32_t size) +{ + void *const ptr = mem->funcs->malloc(mem->obj, size); + return ptr; +} + +void *mem_alloc(const Memory *mem, uint32_t size) +{ + void *const ptr = mem->funcs->calloc(mem->obj, 1, size); + return ptr; +} + +void *mem_valloc(const Memory *mem, uint32_t nmemb, uint32_t size) +{ + const uint32_t bytes = nmemb * size; + + if (size != 0 && bytes / size != nmemb) { + return nullptr; + } + + void *const ptr = mem->funcs->calloc(mem->obj, nmemb, size); + return ptr; +} + +void *mem_vrealloc(const Memory *mem, void *ptr, uint32_t nmemb, uint32_t size) +{ + const uint32_t bytes = nmemb * size; + + if (size != 0 && bytes / size != nmemb) { + return nullptr; + } + + void *const new_ptr = mem->funcs->realloc(mem->obj, ptr, bytes); + return new_ptr; +} + +void mem_delete(const Memory *mem, void *ptr) +{ + mem->funcs->free(mem->obj, ptr); +} -- cgit v1.2.3