Coverage Report

Created: 2024-01-26 01:52

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