# HG changeset patch # User mas01mc # Date 1218295021 0 # Node ID 00cb98315f8c31bd0d9361a5ba201b50e8e61b41 # Parent cac5b3465318696625cfd3d2c3144b93a4a090fd unmap tables on ws_query exit. diff -r cac5b3465318 -r 00cb98315f8c audioDB.cpp --- a/audioDB.cpp Sat Aug 09 15:04:16 2008 +0000 +++ b/audioDB.cpp Sat Aug 09 15:17:01 2008 +0000 @@ -88,7 +88,7 @@ processArgs(argc, argv); assert(O2_ACTION(COM_QUERY)); query(dbName, inFile, adbQueryResponse); - cleanup(); + unmap_tables(); } catch(char *err) { cleanup(); throw(err); @@ -102,13 +102,31 @@ processArgs(argc, argv); assert(O2_ACTION(COM_STATUS)); status(dbName, adbStatusResponse); - cleanup(); } catch(char *err) { cleanup(); throw(err); } } +void audioDB::unmap_tables(){ + if(indata) + munmap(indata,statbuf.st_size); + if(db) + munmap(db,getpagesize()); + if(fileTable) + munmap(fileTable, fileTableLength); + if(trackTable) + munmap(trackTable, trackTableLength); + if(dataBuf) + munmap(dataBuf, dataBufLength); + if(timesTable) + munmap(timesTable, timesTableLength); + if(l2normTable) + munmap(l2normTable, l2normTableLength); + if(trackOffsetTable) + delete trackOffsetTable; +} + void audioDB::cleanup() { cmdline_parser_free(&args_info); if(indata) diff -r cac5b3465318 -r 00cb98315f8c audioDB.h --- a/audioDB.h Sat Aug 09 15:04:16 2008 +0000 +++ b/audioDB.h Sat Aug 09 15:17:01 2008 +0000 @@ -284,6 +284,7 @@ audioDB(const unsigned argc, char* const argv[], adb__queryResponse *adbQueryResponse); audioDB(const unsigned argc, char* const argv[], adb__statusResponse *adbStatusResponse); void cleanup(); + void unmap_tables(); ~audioDB(); int processArgs(const unsigned argc, char* const argv[]); void get_lock(int fd, bool exclusive);