Index: modules/block/block.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/block/block.module,v
retrieving revision 1.435
diff -u -p -r1.435 block.module
--- modules/block/block.module	23 Nov 2010 16:12:15 -0000	1.435
+++ modules/block/block.module	7 Jan 2011 18:02:45 -0000
@@ -793,7 +793,9 @@ function block_block_list_alter(&$blocks
       }
     }
     else {
-      $page_match = TRUE;
+      // If no paths (or php statements) were given, default to not displaying
+      // the block unless visibility is set to "All pages except those listed".
+      $page_match = $block->visibility == 0;
     }
     if (!$page_match) {
       unset($blocks[$key]);
Index: modules/block/block.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/block/block.test,v
retrieving revision 1.64
diff -u -p -r1.64 block.test
--- modules/block/block.test	29 Nov 2010 06:38:51 -0000	1.64
+++ modules/block/block.test	7 Jan 2011 18:02:45 -0000
@@ -191,6 +191,16 @@ class BlockTestCase extends DrupalWebTes
     $this->drupalLogout();
     $this->drupalGet('');
     $this->assertNoText($title, t('Block was not displayed to anonymous users.'));
+
+    $this->drupalLogin($this->admin_user);
+
+    // Clear the visibility paths, set visibility to "Only on listed pages" and
+    // confirm that the block is no longer shown.
+    $edit['pages'] = '';
+    $edit['visibility'] = 1;
+    $this->drupalPost('admin/structure/block/manage/' . $block['module'] . '/' . $block['delta'] . '/configure', $edit, t('Save block'));
+    $this->drupalGet('');
+    $this->assertNoText($title, t('Block is not displayed when no paths are set and visibility is set to "Only on listed pages".'));
   }
 
   /**
