Index: trunk/src/sh_hash.c
===================================================================
--- trunk/src/sh_hash.c	(revision 462)
+++ trunk/src/sh_hash.c	(revision 463)
@@ -1325,4 +1325,12 @@
 
   SL_ENTER(_("sh_hash_init"));
+
+  if ( sh.flag.checkSum == SH_CHECK_INIT )
+    {
+      dlog(1, FIL__, __LINE__, 
+	   _("Attempt to load the baseline database during initialisation. This is an internal error, please report it to the developer.\n"));
+      SH_ABORT;
+      aud_exit (FIL__, __LINE__, EXIT_FAILURE);
+    }
 
   SH_MUTEX_LOCK(mutex_hash);
@@ -2157,16 +2165,19 @@
 {
   sh_file_t * p;
-  int retval;
-
-  if (IsInit != 1) 
-    sh_hash_init();
-
-  SH_MUTEX_LOCK(mutex_hash);
-  p = sh_hash_have_it_int (filename);
-  if (p)
-    retval = p->fflags;
-  else
-    retval = -1;
-  SH_MUTEX_UNLOCK(mutex_hash);
+  int retval = 0;
+
+  if ( sh.flag.checkSum != SH_CHECK_INIT )
+    {
+      if (IsInit != 1) 
+	sh_hash_init();
+      
+      SH_MUTEX_LOCK(mutex_hash);
+      p = sh_hash_have_it_int (filename);
+      if (p)
+	retval = p->fflags;
+      else
+	retval = -1;
+      SH_MUTEX_UNLOCK(mutex_hash);
+    }
   return retval;
 }
@@ -2175,19 +2186,22 @@
 {
   sh_file_t * p;
-  int retval;
-
-  if (IsInit != 1) 
-    sh_hash_init();
-
-  SH_MUTEX_LOCK(mutex_hash);
-  p = sh_hash_have_it_int (filename);
-  if (p)
-    {
-      p->fflags = flags;
-      retval = 0;
-    }
-  else
-    retval = -1;
-  SH_MUTEX_UNLOCK(mutex_hash);
+  int retval = 0;
+
+  if ( sh.flag.checkSum != SH_CHECK_INIT )
+    {
+      if (IsInit != 1) 
+	sh_hash_init();
+      
+      SH_MUTEX_LOCK(mutex_hash);
+      p = sh_hash_have_it_int (filename);
+      if (p)
+	{
+	  p->fflags = flags;
+	  retval = 0;
+	}
+      else
+	retval = -1;
+      SH_MUTEX_UNLOCK(mutex_hash);
+    }
   return retval;
 }
@@ -2199,14 +2213,17 @@
   sh_file_t * p;
 
-  if (IsInit != 1) 
-    sh_hash_init();
-
-  SH_MUTEX_LOCK(mutex_hash);
-  p = sh_hash_have_it_int (filename);
-  if (p)
-    {
-      p->fflags |= flag_to_set;
-    }
-  SH_MUTEX_UNLOCK(mutex_hash);
+  if ( sh.flag.checkSum != SH_CHECK_INIT )
+    {
+      if (IsInit != 1) 
+	sh_hash_init();
+      
+      SH_MUTEX_LOCK(mutex_hash);
+      p = sh_hash_have_it_int (filename);
+      if (p)
+	{
+	  p->fflags |= flag_to_set;
+	}
+      SH_MUTEX_UNLOCK(mutex_hash);
+    }
   return;
 }
@@ -2218,14 +2235,17 @@
   sh_file_t * p;
 
-  if (IsInit != 1) 
-    sh_hash_init();
-
-  SH_MUTEX_LOCK(mutex_hash);
-  p = sh_hash_have_it_int (filename);
-  if (p)
-    {
-      p->fflags &= ~flag_to_clear;
-    }
-  SH_MUTEX_UNLOCK(mutex_hash);
+  if ( sh.flag.checkSum != SH_CHECK_INIT )
+    {
+      if (IsInit != 1) 
+	sh_hash_init();
+      
+      SH_MUTEX_LOCK(mutex_hash);
+      p = sh_hash_have_it_int (filename);
+      if (p)
+	{
+	  p->fflags &= ~flag_to_clear;
+	}
+      SH_MUTEX_UNLOCK(mutex_hash);
+    }
   return;
 }
