Index: wp-includes/functions.php
===================================================================
--- wp-includes/functions.php	(revision 6065)
+++ wp-includes/functions.php	(working copy)
@@ -1193,14 +1193,20 @@
 	else
 		$admin_dir = 'wp-admin/';
 
-	if ( !did_action('admin_head') ) :
+	if ( !function_exists('did_action') || !did_action('admin_head') ) :
 	header('Content-Type: text/html; charset=utf-8');
+	if( function_exists('did_action') ) //Are filters loaded?
+		status_header(500);
+	else
+		header("HTTP/1.0 500 Internal Server Error");
 
-	if ( empty($title) )
-		$title = __('WordPress &rsaquo; Error');
+	if ( empty($title) ){
+		if( function_exists('__') )
+			$title = __('WordPress &rsaquo; Error');
+		else
+			$title = 'WordPress &rsaquo; Error';
+	}
 
-
-
 ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" <?php if ( function_exists('language_attributes') ) language_attributes(); ?>>
Index: wp-includes/wp-db.php
===================================================================
--- wp-includes/wp-db.php	(revision 6065)
+++ wp-includes/wp-db.php	(working copy)
@@ -401,29 +401,7 @@
 	function bail($message) { // Just wraps errors in a nice header and footer
 		if ( !$this->show_errors )
 			return false;
-
-		header('Content-Type: text/html; charset=utf-8');
-
-		if (strpos($_SERVER['PHP_SELF'], 'wp-admin') !== false)
-			$admin_dir = '';
-		else
-			$admin_dir = 'wp-admin/';
-
-?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>WordPress &rsaquo; Error</title>
-	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-	<link rel="stylesheet" href="<?php echo $admin_dir; ?>install.css" type="text/css" />
-</head>
-<body>
-	<h1 id="logo"><img alt="WordPress" src="<?php echo $admin_dir; ?>images/wordpress-logo.png" /></h1>
-	<p><?php echo $message; ?></p>
-</body>
-</html>
-<?php
-		die();
+		wp_die($message);
 	}
 }
 
Index: wp-settings.php
===================================================================
--- wp-settings.php	(revision 6065)
+++ wp-settings.php	(working copy)
@@ -113,6 +113,9 @@
 
 if ( !defined('PLUGINDIR') )
 	define('PLUGINDIR', 'wp-content/plugins'); // no leading slash, no trailing slash
+
+require (ABSPATH . WPINC . '/functions.php');
+
 if ( file_exists(ABSPATH . 'wp-content/db.php') )
 	require_once (ABSPATH . 'wp-content/db.php');
 else
@@ -122,7 +125,7 @@
 $wpdb->prefix = $table_prefix;
 
 if ( preg_match('|[^a-z0-9_]|i', $wpdb->prefix) && !file_exists(ABSPATH . 'wp-content/db.php') )
-	die("<strong>ERROR</strong>: <code>$table_prefix</code> in <code>wp-config.php</code> can only contain numbers, letters, and underscores.");
+	wp_die("<strong>ERROR</strong>: <code>$table_prefix</code> in <code>wp-config.php</code> can only contain numbers, letters, and underscores.");
 
 // Table names
 $wpdb->posts          = $wpdb->prefix . 'posts';
@@ -151,7 +154,6 @@
 
 wp_cache_init();
 
-require (ABSPATH . WPINC . '/functions.php');
 require (ABSPATH . WPINC . '/classes.php');
 require (ABSPATH . WPINC . '/plugin.php');
 require (ABSPATH . WPINC . '/default-filters.php');
