diff --git a/plugins/views_plugin_display_block.inc b/plugins/views_plugin_display_block.inc
index 275f5f4..b0618a8 100644
--- a/plugins/views_plugin_display_block.inc
+++ b/plugins/views_plugin_display_block.inc
@@ -190,18 +190,28 @@ class views_plugin_display_block extends views_plugin_display {
    * Update the block delta when you change the machine readable name of the display.
    */
   function update_block_bid($name, $old_delta, $delta) {
+    $old_hashes = $hashes = variable_get('views_block_hashes', array());
+
     $old_delta = $name . '-' . $old_delta;
     $delta = $name . '-' . $delta;
     if (strlen($old_delta) >= 32) {
       $old_delta = md5($old_delta);
+      unset($hashes[$old_delta]);
     }
     if (strlen($delta) >= 32) {
-      $delta = md5($delta);
+      $md5_delta = md5($delta);
+      $hashes[$md5_delta] = $delta;
+      $delta = $md5_delta;
     }
     db_update('block')
       ->fields(array('delta' => $delta))
       ->condition('delta', $old_delta)
       ->execute();
+
+    // Update the hashes if needed.
+    if ($hashes != $old_hashes) {
+      variable_set('views_block_hashes', $hashes);
+    }
   }
   /**
    * Save the block cache setting in the blocks table if this block allready
diff --git a/views.module b/views.module
index 404c6ac..7bcb7cc 100644
--- a/views.module
+++ b/views.module
@@ -621,7 +621,12 @@ function views_block_view($delta) {
     }
   }
 
-  list($name, $display_id) = explode('-', $delta);
+  // If the delta doesn't contain valid data return nothing.
+  $explode = explode('-', $delta);
+  if (count($explode) != 2) {
+    return;
+  }
+  list($name, $display_id) = $explode;
   // Load the view
   if ($view = views_get_view($name)) {
     if ($view->access($display_id)) {
