Index: modules/block/block.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/block/block.module,v
retrieving revision 1.431
diff -u -p -r1.431 block.module
--- modules/block/block.module	28 Sep 2010 03:30:37 -0000	1.431
+++ modules/block/block.module	30 Sep 2010 21:16:12 -0000
@@ -240,9 +240,24 @@ function block_block_save($delta = 0, $e
  *
  * Generates the administrator-defined blocks for display.
  */
-function block_block_view($delta = 0, $edit = array()) {
-  $block = db_query('SELECT body, format FROM {block_custom} WHERE bid = :bid', array(':bid' => $delta))->fetchObject();
-  $data['content'] = check_markup($block->body, $block->format, '', TRUE);
+function block_block_view($delta = '') {
+  $query = db_select('block_custom', 'bc');
+  $query->join('block', 'b', 'bc.bid = b.delta');
+  $query->addField('bc', 'body', 'body');
+  $query->addField('bc', 'format', 'format');
+  $query->addField('b',  'title', 'title');
+  $query->condition('bc.bid', $delta);
+  $query->range(0,1);
+  $query->addTag('translatable');
+  $query->addTag('block_load');
+  
+  $block = $query->execute()->fetchObject();
+
+  $data = array(
+    // Subject uses the same signature as _block_render_blocks().
+    'subject' => $block->title == '<none>' ? '' : check_plain($block->title),
+    'content' => array('#markup' => check_markup($block->body, $block->format)),
+  );
   return $data;
 }
 
Index: modules/block/block.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/block/block.test,v
retrieving revision 1.58
diff -u -p -r1.58 block.test
--- modules/block/block.test	30 Aug 2010 00:22:03 -0000	1.58
+++ modules/block/block.test	30 Sep 2010 21:16:12 -0000
@@ -78,6 +78,12 @@ class BlockTestCase extends DrupalWebTes
     // Check to see if the custom block was created by checking that it's in the database..
     $this->assertNotNull($bid, t('Custom block found in database'));
 
+    // Check that block_block_view gives the correct title and content.
+    $data = block_block_view($bid);
+    $format = db_query("SELECT format FROM {block_custom} WHERE bid = :bid", array(':bid' => $bid))->fetchField();
+    $this->assertEqual($custom_block['title'], $data['subject'], t('hook_block_view provides correct block title.'));
+    $this->assertEqual(check_markup($custom_block['body[value]'], $format), $data['content']['#markup'], t('hook_block_view provides correct block content.'));
+
     // Check if the block can be moved to all availble regions.
     $custom_block['module'] = 'block';
     $custom_block['delta'] = $bid;
