Coverage Report

Created: 2025-08-05 10:35

/src/c-toxcore/toxcore/mem.c
Line
Count
Source (jump to first uncovered line)
1
/* SPDX-License-Identifier: GPL-3.0-or-later
2
 * Copyright © 2016-2025 The TokTok team.
3
 * Copyright © 2013 Tox project.
4
 */
5
6
#include "mem.h"
7
8
#include <stdlib.h>
9
10
#include "attributes.h"
11
#include "ccompat.h"
12
13
static void *sys_malloc(void *_Nullable obj, uint32_t size)
14
106
{
15
106
    return malloc(size);
16
106
}
17
18
static void *sys_calloc(void *_Nullable obj, uint32_t nmemb, uint32_t size)
19
1.62k
{
20
1.62k
    return calloc(nmemb, size);
21
1.62k
}
22
23
static void *sys_realloc(void *_Nullable obj, void *_Nullable ptr, uint32_t size)
24
0
{
25
0
    return realloc(ptr, size);
26
0
}
27
28
static void sys_free(void *_Nullable obj, void *_Nullable ptr)
29
1.72k
{
30
1.72k
    free(ptr);
31
1.72k
}
32
33
static const Memory_Funcs os_memory_funcs = {
34
    sys_malloc,
35
    sys_calloc,
36
    sys_realloc,
37
    sys_free,
38
};
39
static const Memory os_memory_obj = {&os_memory_funcs};
40
41
const Memory *os_memory(void)
42
2.39k
{
43
2.39k
    return &os_memory_obj;
44
2.39k
}
45
46
void *mem_balloc(const Memory *mem, uint32_t size)
47
10.1k
{
48
10.1k
    void *const ptr = mem->funcs->malloc(mem->obj, size);
49
10.1k
    return ptr;
50
10.1k
}
51
52
void *mem_brealloc(const Memory *mem, void *ptr, uint32_t size)
53
1.96k
{
54
1.96k
    void *const new_ptr = mem->funcs->realloc(mem->obj, ptr, size);
55
1.96k
    return new_ptr;
56
1.96k
}
57
58
void *mem_alloc(const Memory *mem, uint32_t size)
59
69.7k
{
60
69.7k
    void *const ptr = mem->funcs->calloc(mem->obj, 1, size);
61
69.7k
    return ptr;
62
69.7k
}
63
64
void *mem_valloc(const Memory *mem, uint32_t nmemb, uint32_t size)
65
22.3k
{
66
22.3k
    const uint32_t bytes = nmemb * size;
67
68
22.3k
    if (size != 0 && bytes / size != nmemb) {
69
0
        return nullptr;
70
0
    }
71
72
22.3k
    void *const ptr = mem->funcs->calloc(mem->obj, nmemb, size);
73
22.3k
    return ptr;
74
22.3k
}
75
76
void *mem_vrealloc(const Memory *mem, void *ptr, uint32_t nmemb, uint32_t size)
77
44.4k
{
78
44.4k
    const uint32_t bytes = nmemb * size;
79
80
44.4k
    if (size != 0 && bytes / size != nmemb) {
81
0
        return nullptr;
82
0
    }
83
84
44.4k
    void *const new_ptr = mem->funcs->realloc(mem->obj, ptr, bytes);
85
44.4k
    return new_ptr;
86
44.4k
}
87
88
void mem_delete(const Memory *mem, void *ptr)
89
1.23M
{
90
1.23M
    mem->funcs->free(mem->obj, ptr);
91
1.23M
}