File Coverage

gmem.c
Criterion Covered Total %
statement 4 4 100.0
branch n/a
condition n/a
subroutine n/a
pod n/a
total 4 4 100.0


line stmt bran cond sub pod time code
1             #include
2             #include
3             #include "gmem.h"
4              
5             int gmem_unused = 0;
6              
7             #if defined(GMEM_CHECK) && GMEM_CHECK >= 1
8              
9             long gmem_new = 0;
10             long gmem_del = 0;
11              
12             static int gmem_inited = 0;
13              
14             void gmem_init()
15             {
16             if (gmem_inited) {
17             return;
18             }
19              
20             gmem_inited = 1;
21             gmem_new = gmem_del = 0;
22              
23             #if defined(GMEM_CHECK) && GMEM_CHECK >= 1
24             fprintf(stderr, "=== MEM BEG {%lu} %ld %ld ===\n",
25             (unsigned long) getpid(), gmem_new, gmem_del);
26             #endif
27             }
28              
29             void gmem_fini(void)
30             {
31             if (!gmem_inited) {
32             return ;
33             }
34              
35             #if defined(GMEM_CHECK) && GMEM_CHECK >= 1
36             fprintf(stderr, "=== MEM END {%lu} %ld %ld ===\n",
37             (unsigned long) getpid(), gmem_new, gmem_del);
38             if (gmem_new == gmem_del) {
39             fprintf(stderr, "=== MEM OK {%lu} ===\n",
40             (unsigned long) getpid());
41             } else {
42             fprintf(stderr, "=== MEM ERR {%lu} %ld BYTES ===\n",
43             (unsigned long) getpid(), gmem_new - gmem_del);
44             }
45             #endif
46             gmem_inited = 0;
47             }
48              
49             int gmem_new_called(const char* file,
50             int line,
51             void* var,
52             int count,
53             long size)
54             {
55             long total = 0;
56              
57             if (!var) {
58             return 0;
59             }
60              
61             if (size <= 0 || count <= 0) {
62             return 0;
63             }
64              
65             if (!gmem_inited) {
66             gmem_init();
67             }
68              
69             total = size * count;
70              
71             #if defined(GMEM_CHECK) && GMEM_CHECK >= 2
72             fprintf(stderr, "=== MEM NEW %s %d %p %d %ld %ld ===\n",
73             file, line, var, count, size, total);
74             #endif
75              
76             gmem_new += total;
77             return total;
78             }
79              
80             int gmem_del_called(const char* file,
81             int line,
82             void* var,
83             int count,
84             long size)
85             {
86             long total = 0;
87              
88             if (!var) {
89             return 0;
90             }
91              
92             if (size < 0 && var) {
93             size = strlen((char*) var) + 1;
94             }
95             if (size <= 0 || count <= 0) {
96             return 0;
97             }
98              
99             if (!gmem_inited) {
100             gmem_init();
101             }
102              
103             total = size * count;
104              
105             #if defined(GMEM_CHECK) && GMEM_CHECK >= 2
106             fprintf(stderr, "=== MEM DEL %s %d %p %d %ld %ld ===\n",
107             file, line, var, count, size, total);
108             #endif
109              
110             gmem_del += total;
111             return total;
112             }
113              
114             int gmem_strnew(const char* file,
115             int line,
116             char** tgt,
117             const char* src,
118             int len)
119             {
120             if (!tgt) {
121             return 0;
122             }
123              
124             *tgt = 0;
125             if (!src) {
126             return 0;
127             }
128              
129             if (len <= 0) {
130             len = strlen(src) + 1;
131             }
132             _GMEM_NEW(*tgt, char*, len);
133             memcpy(*tgt, src, len);
134             gmem_new_called(file, line, *tgt, len, 1);
135             return len;
136             }
137              
138             int gmem_strdel(const char* file,
139             int line,
140             char** str,
141             int len)
142             {
143             if (!str || !*str) {
144             return 0;
145             }
146              
147             if (len <= 0) {
148             len = strlen(*str) + 1;
149             }
150             gmem_del_called(file, line, *str, len, 1);
151             _GMEM_DEL(*str, char*, len);
152             *str = 0;
153             return len;
154             }
155              
156             #else
157              
158 7           void gmem_init()
159             {
160 7           }
161              
162 14           void gmem_fini(void)
163             {
164 14           }
165              
166             #endif /* #if defined(GMEM_CHECK) && GMEM_CHECK >= 1 */