Fix CI_Encryption::substr() for PHP 5.3

Nothing critical, just an edge case that isn't currently used
diff --git a/system/libraries/Encryption.php b/system/libraries/Encryption.php
index e002c28..1a61967 100644
--- a/system/libraries/Encryption.php
+++ b/system/libraries/Encryption.php
@@ -897,10 +897,13 @@
 	 * @param	int	$length
 	 * @return	string
 	 */
-	protected static function substr($str, $start, $length = null)
+	protected static function substr($str, $start, $length = NULL)
 	{
 		if (self::$func_override)
 		{
+			// mb_substr($str, $start, null, '8bit') returns an empty
+			// string on PHP 5.3
+			isset($length) OR $length = ($start >= 0 ? self::strlen($str) - $start : -$start);
 			return mb_substr($str, $start, $length, '8bit');
 		}