Fix memory leaks

pull/2/head
Stelios Bounanos 2009-01-12 01:53:41 +00:00
rodzic 5fea1340ae
commit bb44e467ab
5 zmienionych plików z 13 dodań i 4 usunięć

Wyświetl plik

@ -111,6 +111,7 @@ int n, fldsize;
memset (flddata, 0, fldsize + 1); memset (flddata, 0, fldsize + 1);
strncpy (flddata, p, fldsize); strncpy (flddata, p, fldsize);
adifqso.putField (fieldnum, (const char *)flddata); adifqso.putField (fieldnum, (const char *)flddata);
delete [] flddata;
} }
void cAdifIO::readFile (const char *fname, cQsoDb *db) { void cAdifIO::readFile (const char *fname, cQsoDb *db) {
@ -167,8 +168,7 @@ void cAdifIO::readFile (const char *fname, cQsoDb *db) {
p2 = strchr(p1,'<'); p2 = strchr(p1,'<');
} }
db->SortByDate(); db->SortByDate();
return; delete [] buff;
} }
string ADIFHEADER = ""; string ADIFHEADER = "";

Wyświetl plik

@ -24,7 +24,7 @@ cQsoRec::cQsoRec() {
cQsoRec::~cQsoRec () { cQsoRec::~cQsoRec () {
for (int i = 0; i < NUMFIELDS; i++) for (int i = 0; i < NUMFIELDS; i++)
delete qsofield[i]; delete [] qsofield[i];
} }
void cQsoRec::clearRec () { void cQsoRec::clearRec () {
@ -149,6 +149,8 @@ int compareCalls (const cQsoRec &r1, const cQsoRec &r2) {
} }
} else } else
cmp = strcmp (r1.qsofield[CALL], r2.qsofield[CALL]); cmp = strcmp (r1.qsofield[CALL], r2.qsofield[CALL]);
delete [] s1;
delete [] s2;
if (cmp == 0) if (cmp == 0)
return compareDates (r1,r2); return compareDates (r1,r2);
return cmp; return cmp;

Wyświetl plik

@ -748,7 +748,7 @@ void Table::clear(bool removeColumns) {
row = *i; row = *i;
for (int i = 0; i < nCols; i++) for (int i = 0; i < nCols; i++)
free(row[i]); free(row[i]);
free(row); delete [] row;
} }
data.clear(); data.clear();

Wyświetl plik

@ -97,8 +97,14 @@ bool dxcc_open(const char* filename)
void dxcc_close(void) void dxcc_close(void)
{ {
if (!cmap)
return;
delete cnames; delete cnames;
cnames = 0; cnames = 0;
map<dxcc*, bool> rm;
for (dxcc_map::iterator i = cmap->begin(); i != cmap->end(); ++i)
if (rm.insert(make_pair(i->second, true)).second)
delete i->second;
delete cmap; delete cmap;
cmap = 0; cmap = 0;
} }

Wyświetl plik

@ -192,6 +192,7 @@ void spot_unregister_recv(spot_recv_cb_t rcb, void* rdata)
cblist_t::reverse_iterator ri; cblist_t::reverse_iterator ri;
for (ri = cblist.rbegin(); ri != cblist.rend(); ++ri) { for (ri = cblist.rbegin(); ri != cblist.rend(); ++ri) {
if (rcb == ri->rcb && rdata == ri->data) { if (rcb == ri->rcb && rdata == ri->data) {
delete ri->re;
cblist.erase((++ri).base()); cblist.erase((++ri).base());
break; break;
} }