Set representative license: LGPL-2.1
[platform/upstream/7zip.git] / C / 7zAlloc.c
1 /* 7zAlloc.c -- Allocation functions\r
2 2010-10-29 : Igor Pavlov : Public domain */\r
3 \r
4 #include "7zAlloc.h"\r
5 \r
6 /* #define _SZ_ALLOC_DEBUG */\r
7 /* use _SZ_ALLOC_DEBUG to debug alloc/free operations */\r
8 \r
9 #ifdef _SZ_ALLOC_DEBUG\r
10 \r
11 #ifdef _WIN32\r
12 #include <windows.h>\r
13 #endif\r
14 \r
15 #include <stdio.h>\r
16 int g_allocCount = 0;\r
17 int g_allocCountTemp = 0;\r
18 \r
19 #endif\r
20 \r
21 void *SzAlloc(void *p, size_t size)\r
22 {\r
23   p = p;\r
24   if (size == 0)\r
25     return 0;\r
26   #ifdef _SZ_ALLOC_DEBUG\r
27   fprintf(stderr, "\nAlloc %10d bytes; count = %10d", size, g_allocCount);\r
28   g_allocCount++;\r
29   #endif\r
30   return malloc(size);\r
31 }\r
32 \r
33 void SzFree(void *p, void *address)\r
34 {\r
35   p = p;\r
36   #ifdef _SZ_ALLOC_DEBUG\r
37   if (address != 0)\r
38   {\r
39     g_allocCount--;\r
40     fprintf(stderr, "\nFree; count = %10d", g_allocCount);\r
41   }\r
42   #endif\r
43   free(address);\r
44 }\r
45 \r
46 void *SzAllocTemp(void *p, size_t size)\r
47 {\r
48   p = p;\r
49   if (size == 0)\r
50     return 0;\r
51   #ifdef _SZ_ALLOC_DEBUG\r
52   fprintf(stderr, "\nAlloc_temp %10d bytes;  count = %10d", size, g_allocCountTemp);\r
53   g_allocCountTemp++;\r
54   #ifdef _WIN32\r
55   return HeapAlloc(GetProcessHeap(), 0, size);\r
56   #endif\r
57   #endif\r
58   return malloc(size);\r
59 }\r
60 \r
61 void SzFreeTemp(void *p, void *address)\r
62 {\r
63   p = p;\r
64   #ifdef _SZ_ALLOC_DEBUG\r
65   if (address != 0)\r
66   {\r
67     g_allocCountTemp--;\r
68     fprintf(stderr, "\nFree_temp; count = %10d", g_allocCountTemp);\r
69   }\r
70   #ifdef _WIN32\r
71   HeapFree(GetProcessHeap(), 0, address);\r
72   return;\r
73   #endif\r
74   #endif\r
75   free(address);\r
76 }\r