Introduction
Introduction Statistics Contact Development Disclaimer Help
emalloc.h - blind - suckless command-line video editing utility
git clone git://git.suckless.org/blind
Log
Files
Refs
README
LICENSE
---
emalloc.h (2045B)
---
1 /* See LICENSE file for copyright and license details. */
2 #include <stdlib.h>
3 #include <stdint.h>
4
5 #define emalloc(...) enmalloc(1, __VA_ARGS__)
6 #define emalloc2(...) enmalloc2(1, __VA_ARGS__)
7 #define emalloc3(...) enmalloc3(1, __VA_ARGS__)
8 #define ecalloc(...) encalloc(1, __VA_ARGS__)
9 #define erealloc(...) enrealloc(1, __VA_ARGS__)
10 #define erealloc2(...) enrealloc2(1, __VA_ARGS__)
11 #define erealloc3(...) enrealloc3(1, __VA_ARGS__)
12
13 #define malloc2(n, m) malloc(n * m);
14 #define malloc3(n1, n2, n3) malloc(n1 * n2 * n3);
15 #define realloc2(p, n, m) realloc(p, n * m);
16 #define realloc3(p, n1, n2, n3) realloc(p, n1 * n2 * n3);
17
18 static inline void *
19 enmalloc(int status, size_t n)
20 {
21 void *ptr = malloc(n);
22 if (!ptr)
23 enprintf(status, "malloc: out of memory\n");
24 return ptr;
25 }
26
27 static inline void *
28 enmalloc2(int status, size_t n, size_t m)
29 {
30 void *ptr;
31 if (n > SIZE_MAX / m || !(ptr = malloc(n * m)))
32 enprintf(status, "malloc: out of memory\n");
33 return ptr;
34 }
35
36 static inline void *
37 enmalloc3(int status, size_t n1, size_t n2, size_t n3)
38 {
39 void *ptr;
40 size_t n = n1;
41 if (n2 > SIZE_MAX / n ||
42 n3 > SIZE_MAX / (n *= n2) ||
43 !(ptr = malloc(n * n3)))
44 enprintf(status, "malloc: out of memory\n");
45 return ptr;
46 }
47
48 static inline void *
49 encalloc(int status, size_t n, size_t m)
50 {
51 void *ptr = calloc(n, m);
52 if (!ptr)
53 enprintf(status, "calloc: out of memory\n");
54 return ptr;
55 }
56
57 static inline void *
58 enrealloc(int status, void *ptr, size_t n)
59 {
60 ptr = realloc(ptr, n);
61 if (!ptr)
62 enprintf(status, "realloc: out of memory\n");
63 return ptr;
64 }
65
66 static inline void *
67 enrealloc2(int status, void *ptr, size_t n, size_t m)
68 {
69 if (n > SIZE_MAX / m || !(ptr = realloc(ptr, n * m)))
70 enprintf(status, "realloc: out of memory\n");
71 return ptr;
72 }
73
74 static inline void *
75 enrealloc3(int status, void *ptr, size_t n1, size_t n2, size_t n3)
76 {
77 size_t n = n1;
78 if (n2 > SIZE_MAX / n ||
79 n3 > SIZE_MAX / (n *= n2) ||
80 !(ptr = realloc(ptr, n * n3)))
81 enprintf(status, "realloc: out of memory\n");
82 return ptr;
83 }
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.