Index: src/libchcore/TSerializerVersion.cpp
===================================================================
diff -u -rb1ecc12ba4c1f2a7b4acd6e82fc4193535e55ff0 -r1342b18babc7e88850e74f46cb473a737a68f28a
--- src/libchcore/TSerializerVersion.cpp	(.../TSerializerVersion.cpp)	(revision b1ecc12ba4c1f2a7b4acd6e82fc4193535e55ff0)
+++ src/libchcore/TSerializerVersion.cpp	(.../TSerializerVersion.cpp)	(revision 1342b18babc7e88850e74f46cb473a737a68f28a)
@@ -30,7 +30,8 @@
 using namespace sqlite;
 
 TSerializerVersion::TSerializerVersion(const TSQLiteDatabasePtr& spDatabase) :
-	m_spDatabase(spDatabase)
+	m_spDatabase(spDatabase),
+	m_bSetupExecuted(false)
 {
 	if(!spDatabase)
 		THROW_SERIALIZER_EXCEPTION(eErr_InvalidArgument, _T("No database provided"));
@@ -42,6 +43,9 @@
 
 void TSerializerVersion::Setup()
 {
+	if(m_bSetupExecuted)
+		return;
+
 	TSQLiteTransaction tTransaction(m_spDatabase);
 	TSQLiteStatement tStatement(m_spDatabase);
 
@@ -64,10 +68,14 @@
 	}
 
 	tTransaction.Commit();
+
+	m_bSetupExecuted = true;
 }
 
 int TSerializerVersion::GetVersion()
 {
+	Setup();
+
 	TSQLiteTransaction tTransaction(m_spDatabase);
 	TSQLiteStatement tStatement(m_spDatabase);
 
@@ -85,6 +93,8 @@
 
 void TSerializerVersion::SetVersion(int iNewVersion)
 {
+	Setup();
+
 	TSQLiteTransaction tTransaction(m_spDatabase);
 	TSQLiteStatement tStatement(m_spDatabase);