changeset 312:00cb98315f8c

unmap tables on ws_query exit.
author mas01mc
date Sat, 09 Aug 2008 15:17:01 +0000
parents cac5b3465318
children f9dde18f556a
files audioDB.cpp audioDB.h
diffstat 2 files changed, 21 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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)
--- 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);