Diffstat (limited to 'noncore/settings/aqpkg/mem.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/settings/aqpkg/mem.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/noncore/settings/aqpkg/mem.cpp b/noncore/settings/aqpkg/mem.cpp index 4c6117b..d8de09f 100644 --- a/noncore/settings/aqpkg/mem.cpp +++ b/noncore/settings/aqpkg/mem.cpp | |||
@@ -19,26 +19,28 @@ | |||
19 | ..}^=.= = ; Public License for more details. | 19 | ..}^=.= = ; Public License for more details. |
20 | ++= -. .` .: | 20 | ++= -. .` .: |
21 | : = ...= . :.=- You should have received a copy of the GNU | 21 | : = ...= . :.=- You should have received a copy of the GNU |
22 | -. .:....=;==+<; General Public License along with this file; | 22 | -. .:....=;==+<; General Public License along with this file; |
23 | -_. . . )=. = see the file COPYING. If not, write to the | 23 | -_. . . )=. = see the file COPYING. If not, write to the |
24 | -- :-=` Free Software Foundation, Inc., | 24 | -- :-=` Free Software Foundation, Inc., |
25 | 59 Temple Place - Suite 330, | 25 | 59 Temple Place - Suite 330, |
26 | Boston, MA 02111-1307, USA. | 26 | Boston, MA 02111-1307, USA. |
27 | 27 | ||
28 | */ | 28 | */ |
29 | 29 | ||
30 | #include <stdio.h> | 30 | #include <stdio.h> |
31 | #include <list> | 31 | #include <stdlib.h> |
32 | using namespace std; | 32 | #include <string.h> |
33 | |||
34 | #include <qvaluelist.h> | ||
33 | 35 | ||
34 | #define __MEMFILE_C | 36 | #define __MEMFILE_C |
35 | #include "global.h" | 37 | #include "global.h" |
36 | 38 | ||
37 | #ifdef _DEBUG | 39 | #ifdef _DEBUG |
38 | 40 | ||
39 | void __cdecl *operator new( unsigned int size, const char *file, int line ) | 41 | void __cdecl *operator new( unsigned int size, const char *file, int line ) |
40 | { | 42 | { |
41 | void *ptr = (void *)malloc(size); | 43 | void *ptr = (void *)malloc(size); |
42 | AddTrack((long)ptr, size, file, line); | 44 | AddTrack((long)ptr, size, file, line); |
43 | return(ptr); | 45 | return(ptr); |
44 | } | 46 | } |
@@ -50,61 +52,61 @@ void operator delete(void *p) | |||
50 | } | 52 | } |
51 | 53 | ||
52 | #endif | 54 | #endif |
53 | 55 | ||
54 | 56 | ||
55 | typedef struct { | 57 | typedef struct { |
56 | longaddress; | 58 | longaddress; |
57 | longsize; | 59 | longsize; |
58 | charfile[64]; | 60 | charfile[64]; |
59 | longline; | 61 | longline; |
60 | } ALLOC_INFO; | 62 | } ALLOC_INFO; |
61 | 63 | ||
62 | typedef list<ALLOC_INFO*> AllocList; | 64 | typedef QValueList<ALLOC_INFO*> AllocList; |
63 | 65 | ||
64 | AllocList allocList; | 66 | AllocList allocList; |
65 | 67 | ||
66 | 68 | ||
67 | 69 | ||
68 | void AddTrack(long addr, long asize, const char *fname, long lnum) | 70 | void AddTrack(long addr, long asize, const char *fname, long lnum) |
69 | { | 71 | { |
70 | ALLOC_INFO *info; | 72 | ALLOC_INFO *info; |
71 | 73 | ||
72 | 74 | ||
73 | info = (ALLOC_INFO *)malloc(sizeof( ALLOC_INFO )); | 75 | info = (ALLOC_INFO *)malloc(sizeof( ALLOC_INFO )); |
74 | info->address = addr; | 76 | info->address = addr; |
75 | strncpy(info->file, fname, 63); | 77 | strncpy(info->file, fname, 63); |
76 | info->line = lnum; | 78 | info->line = lnum; |
77 | info->size = asize; | 79 | info->size = asize; |
78 | allocList.insert(allocList.begin(), info); | 80 | allocList.insert(allocList.begin(), info); |
79 | }; | 81 | }; |
80 | 82 | ||
81 | void RemoveTrack(long addr) | 83 | void RemoveTrack(long addr) |
82 | { | 84 | { |
83 | AllocList::iterator i; | 85 | AllocList::Iterator i; |
84 | 86 | ||
85 | bool found = false; | 87 | bool found = false; |
86 | for(i = allocList.begin(); i != allocList.end(); i++) | 88 | for(i = allocList.begin(); i != allocList.end(); i++) |
87 | { | 89 | { |
88 | if((*i)->address == addr) | 90 | if((*i)->address == addr) |
89 | { | 91 | { |
90 | allocList.remove((*i)); | 92 | allocList.remove((*i)); |
91 | found = true; | 93 | found = true; |
92 | break; | 94 | break; |
93 | } | 95 | } |
94 | } | 96 | } |
95 | } | 97 | } |
96 | 98 | ||
97 | void DumpUnfreed() | 99 | void DumpUnfreed() |
98 | { | 100 | { |
99 | AllocList::iterator i; | 101 | AllocList::Iterator i; |
100 | long totalSize = 0; | 102 | long totalSize = 0; |
101 | char buf[1024]; | 103 | char buf[1024]; |
102 | // Debug output, okay to leave untranslated | 104 | // Debug output, okay to leave untranslated |
103 | for(i = allocList.begin(); i != allocList.end(); i++) { | 105 | for(i = allocList.begin(); i != allocList.end(); i++) { |
104 | sprintf(buf, "%-15s: LINE %ld, ADDRESS %ld %ld unfreed", | 106 | sprintf(buf, "%-15s: LINE %ld, ADDRESS %ld %ld unfreed", |
105 | (*i)->file, (*i)->line, (*i)->address, (*i)->size); | 107 | (*i)->file, (*i)->line, (*i)->address, (*i)->size); |
106 | totalSize += (*i)->size; | 108 | totalSize += (*i)->size; |
107 | } | 109 | } |
108 | sprintf(buf, "-----------------------------------------------------------\n"); | 110 | sprintf(buf, "-----------------------------------------------------------\n"); |
109 | sprintf(buf, "Total Unfreed: %ld bytes\n", totalSize); | 111 | sprintf(buf, "Total Unfreed: %ld bytes\n", totalSize); |
110 | }; | 112 | }; |