* Close the database before the destructor runs.
This commit is contained in:
		
							parent
							
								
									fa95f4be3f
								
							
						
					
					
						commit
						d822bf32e4
					
				
					 4 changed files with 15 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -14,6 +14,7 @@ extern "C" {
 | 
			
		|||
 | 
			
		||||
#include "globals.hh"
 | 
			
		||||
#include "gc.hh"
 | 
			
		||||
#include "store.hh"
 | 
			
		||||
#include "shared.hh"
 | 
			
		||||
 | 
			
		||||
#include "config.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -213,6 +214,8 @@ static void initAndRun(int argc, char * * argv)
 | 
			
		|||
    RemoveTempRoots removeTempRoots; /* unused variable - don't remove */
 | 
			
		||||
 | 
			
		||||
    run(remaining);
 | 
			
		||||
 | 
			
		||||
    closeDB(); /* it's fine if the DB isn't actually open */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -278,6 +278,8 @@ void Database::close()
 | 
			
		|||
    } catch (DbException e) { rethrow(e); }
 | 
			
		||||
 | 
			
		||||
    delete env;
 | 
			
		||||
 | 
			
		||||
    env = 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -136,6 +136,13 @@ void initDB()
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void closeDB()
 | 
			
		||||
{
 | 
			
		||||
    /* If the database isn't open, this is a NOP. */
 | 
			
		||||
    nixDB.close();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void createStoreTransaction(Transaction & txn)
 | 
			
		||||
{
 | 
			
		||||
    Transaction txn2(nixDB);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -49,6 +49,9 @@ void openDB(bool reserveSpace = true);
 | 
			
		|||
/* Create the required database tables. */
 | 
			
		||||
void initDB();
 | 
			
		||||
 | 
			
		||||
/* Close the database. */
 | 
			
		||||
void closeDB();
 | 
			
		||||
 | 
			
		||||
/* Get a transaction object. */
 | 
			
		||||
void createStoreTransaction(Transaction & txn);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue