PHP 5.3.0 compatibility changes
diff --git a/system/codeigniter/CodeIgniter.php b/system/codeigniter/CodeIgniter.php
index 68f6c75..b78736a 100644
--- a/system/codeigniter/CodeIgniter.php
+++ b/system/codeigniter/CodeIgniter.php
@@ -56,8 +56,8 @@
  *  Define a custom error handler so we can log PHP errors
  * ------------------------------------------------------
  */
-set_error_handler('_exception_handler');
-set_magic_quotes_runtime(0); // Kill magic quotes
+//set_error_handler('_exception_handler');
+@set_magic_quotes_runtime(0); // Kill magic quotes
 
 /*
  * ------------------------------------------------------
@@ -130,7 +130,7 @@
  *  Note: The Loader class needs to be included first
  *
  */
-if (floor(phpversion()) < 5)
+if ( ! is_php(5))
 {
 	load_class('Loader', FALSE);
 	require(BASEPATH.'codeigniter/Base4'.EXT);
diff --git a/system/codeigniter/Common.php b/system/codeigniter/Common.php
index f45c85c..1ffed6a 100644
--- a/system/codeigniter/Common.php
+++ b/system/codeigniter/Common.php
@@ -150,17 +150,35 @@
 	if ($is_subclass == TRUE)
 	{
 		$name = config_item('subclass_prefix').$class;
-		$objects[$class] =& new $name();
+
+		$objects[$class] =& instantiate_class(new $name());
 		return $objects[$class];
 	}
 
 	$name = ($class != 'Controller') ? 'CI_'.$class : $class;
-	
-	$objects[$class] =& new $name();
+
+	$objects[$class] =& instantiate_class(new $name());
 	return $objects[$class];
 }
 
 /**
+ * Instantiate Class
+ *
+ * Returns a new class object by reference, used by load_class() and the DB class.
+ * Required to retain PHP 4 compatibility and also not make PHP 5.3 cry.
+ *
+ * Use: $obj =& instantiate_class(new Foo());
+ * 
+ * @access	public
+ * @param	object
+ * @return	object
+ */
+function &instantiate_class(&$class_object)
+{
+	return $class_object;
+}
+
+/**
 * Loads the main config.php file
 *
 * @access	private