Mercurial > hg > audiodb
changeset 481:cead91ecf9a2 memory-leaks
added file descriptor close() in lshlib.cpp
author | mas01mc |
---|---|
date | Sat, 10 Jan 2009 13:23:01 +0000 |
parents | d7c23fcc8e2a |
children | bf54b8fa7d89 |
files | lshlib.cpp |
diffstat | 1 files changed, 12 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/lshlib.cpp Sat Jan 10 13:18:24 2009 +0000 +++ b/lshlib.cpp Sat Jan 10 13:23:01 2009 +0000 @@ -472,6 +472,7 @@ calling_instance(0), add_point_callback(0) { + FILE* dbFile = 0; int dbfid = unserialize_lsh_header(filename); indexName = new char[O2_INDEX_MAXSTR]; strncpy(indexName, filename, O2_INDEX_MAXSTR); // COPY THE CONTENTS TO THE NEW POINTER @@ -485,12 +486,16 @@ // Format2 always needs unserializing if(lshHeader->flags&O2_SERIAL_FILEFORMAT2 && lshInCoreFlag){ - FILE* dbFile = fdopen(dbfid, "rb"); + dbFile = fdopen(dbfid, "rb"); if(!dbFile) error("Cannot open LSH file for reading", filename); unserialize_lsh_hashtables_format2(dbFile); } serial_close(dbfid); + if(dbFile){ + fclose(dbFile); + dbFile = 0; + } } G::~G(){ @@ -680,7 +685,7 @@ int dbfid; char* db; int dbIsNew=0; - + FILE* dbFile = 0; // Check requested serialFormat if(!(serialFormat==O2_SERIAL_FILEFORMAT1 || serialFormat==O2_SERIAL_FILEFORMAT2)) error("Unrecognized serial file format request: ", "serialize()"); @@ -717,7 +722,7 @@ if(serialFormat == O2_SERIAL_FILEFORMAT1) serialize_lsh_hashtables_format1(dbfid, !dbIsNew); else{ - FILE* dbFile = fdopen(dbfid, "r+b"); + dbFile = fdopen(dbfid, "r+b"); if(!dbFile) error("Cannot open LSH file for writing",filename); serialize_lsh_hashtables_format2(dbFile, !dbIsNew); @@ -736,6 +741,10 @@ serial_munmap(db, O2_SERIAL_HEADER_SIZE); // drop mmap } serial_close(dbfid); + if(dbFile){ + fclose(dbFile); + dbFile = 0; + } } // Test to see if core structure and requested format is