Fixed a bug where the end character was being added when the character limit's limit intersected the last word of the string.

http://expressionengine.com/forums/viewthread/103748/
diff --git a/system/helpers/text_helper.php b/system/helpers/text_helper.php
index e79a241..fa1de8b 100644
--- a/system/helpers/text_helper.php
+++ b/system/helpers/text_helper.php
@@ -87,14 +87,16 @@
 		{
 			return $str;
 		}
-									
+
 		$out = "";
 		foreach (explode(' ', trim($str)) as $val)
 		{
-			$out .= $val.' ';			
+			$out .= $val.' ';
+			
 			if (strlen($out) >= $n)
 			{
-				return trim($out).$end_char;
+				$out = trim($out);
+				return (strlen($out) == strlen($str)) ? $out : $out.$end_char;
 			}		
 		}
 	}
@@ -236,7 +238,7 @@
 		// \w, \b and a few others do not match on a unicode character
 		// set for performance reasons. As a result words like über
 		// will not match on a word boundary. Instead, we'll assume that
-		// a bad word will be bookeneded by any of these characters.
+		// a bad word will be bookended by any of these characters.
 		$delim = '[-_\'\"`(){}<>\[\]|!?@#%&,.:;^~*+=\/ 0-9\n\r\t]';
 
 		foreach ($censored as $badword)