Index: /CKEditor/trunk/_source/core/htmlparser/fragment.js
===================================================================
--- /CKEditor/trunk/_source/core/htmlparser/fragment.js	(revision 7453)
+++ /CKEditor/trunk/_source/core/htmlparser/fragment.js	(revision 7454)
@@ -195,4 +195,11 @@
 			target.add( element );
 
+			if ( element.name == 'pre' )
+				inPre = false;
+
+			if ( element.name == 'textarea' )
+				inTextarea = false;
+
+
 			if ( element.returnPoint )
 			{
@@ -361,10 +368,4 @@
 				currentNode = candidate;
 
-				if ( currentNode.name == 'pre' )
-					inPre = false;
-
-				if ( currentNode.name == 'textarea' )
-					inTextarea = false;
-
 				if ( candidate._.isBlockLike )
 					sendPendingBRs();
@@ -400,6 +401,8 @@
 								 CKEDITOR.dtd.div : CKEDITOR.dtd.span ) ) : rootDtd;
 
-			// Fix orphan text in list/table. (#8540)
-			if ( !currentDtd [ '#' ] && currentName in nonBreakingBlocks )
+			// Fix orphan text in list/table. (#8540) (#8870)
+			if ( !inTextarea &&
+				 !currentDtd [ '#' ] &&
+				 currentName in nonBreakingBlocks )
 			{
 				parser.onTagOpen( currentName in listBlocks ? 'li' :
