Discard the unwanted changes
diff --git a/system/core/Config.php b/system/core/Config.php
index 41367d3..ad0e5f9 100644
--- a/system/core/Config.php
+++ b/system/core/Config.php
@@ -76,9 +76,16 @@
 		// Set the base_url automatically if none was provided
 		if (empty($this->config['base_url']))
 		{
-			$base_url = (is_https() ? 'https' : 'http').'://'
-				.(isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : 'localhost')
-				.substr($_SERVER['SCRIPT_NAME'], 0, -strlen(basename($_SERVER['SCRIPT_NAME'])));
+			if (isset($_SERVER['HTTP_HOST']))
+			{
+				$base_url = (is_https() ? 'https' : 'http')
+					.'://'.$_SERVER['HTTP_HOST']
+					.substr($_SERVER['SCRIPT_NAME'], 0, -strlen(basename($_SERVER['SCRIPT_NAME'])));
+			}
+			else
+			{
+				$base_url = 'http://localhost/';
+			}
 
 			$this->set_item('base_url', $base_url);
 		}
diff --git a/tests/codeigniter/core/Config_test.php b/tests/codeigniter/core/Config_test.php
index 81401e3..2c28a63 100644
--- a/tests/codeigniter/core/Config_test.php
+++ b/tests/codeigniter/core/Config_test.php
@@ -67,6 +67,13 @@
 		// Clear base_url
 		$this->ci_set_config('base_url', '');
 
+		// Rerun constructor
+		$cls =& $this->ci_core_class('cfg');
+		$this->config = new $cls;
+
+		// Test default base
+		$this->assertEquals('http://localhost/', $this->config->base_url());
+
 		// Capture server vars
 		$old_host = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : NULL;
 		$old_script = isset($_SERVER['SCRIPT_NAME']) ? $_SERVER['SCRIPT_NAME'] : NULL;
@@ -80,7 +87,6 @@
 		$_SERVER['SCRIPT_NAME'] = $path.$script;
 
 		// Rerun constructor
-		$cls =& $this->ci_core_class('cfg');
 		$this->config = new $cls;
 
 		// Test plain detected (root)