diff --git a/plugins/content_types/block/block.inc b/plugins/content_types/block/block.inc
index 9d55e8a..55300d6 100644
--- a/plugins/content_types/block/block.inc
+++ b/plugins/content_types/block/block.inc
@@ -286,13 +286,24 @@ function ctools_block_content_type_admin_info($subtype, $conf) {
   list($module, $delta) = _ctools_block_get_module_delta($subtype, $conf);
   $block = (object) module_invoke($module, 'block_view', $delta);
 
-  // Sanitize the block because <script> tags can hose javascript up:
-  if (!empty($block->content)) {
-    $block->content = filter_xss_admin($block->content);
-  }
+  // Only proceed if a block was returned.
+  if (!empty($block))) {
+    // Sanitize the block because <script> tags can hose javascript up.
+    if (!empty($block->content)) {
+      // If this isn't a simple string then it needs to be rendered first.
+      if (!is_string($block->content)) {
+        $block->content = drupal_render($block->content);
+      }
+      $block->content = filter_xss_admin($block->content);
+    }
+
+    if (!empty($block->subject)) {
+      $block->title = $block->subject;
+    }
+    elseif (empty($block->title)) {
+      $block->title = t('No title');
+    }
 
-  if (!empty($block) && !empty($block->subject)) {
-    $block->title = $block->subject;
     return $block;
   }
 }
