diff --git a/modules/block/block.module b/modules/block/block.module
index d0311a206e0918728e7da7937ac48b06213b5849..1236d1332b9f7bdebe30b846b18ce9fb99aafa69 100644
--- a/modules/block/block.module
+++ b/modules/block/block.module
@@ -146,6 +146,8 @@ function _block_rehash() {
 
   init_theme();
 
+  db_lock_table('blocks');
+
   $result = db_query("SELECT * FROM {blocks} WHERE theme = '%s'", $theme_key);
   while ($old_block = db_fetch_object($result)) {
     $old_blocks[$old_block->module][$old_block->delta] = $old_block;
@@ -185,7 +187,6 @@ function _block_rehash() {
     }
   }
 
-  db_lock_table('blocks');
   // Remove all blocks from table.
   db_query("DELETE FROM {blocks} WHERE theme = '%s'", $theme_key);