Index: /CKEditor/trunk/_source/core/dom/walker.js
===================================================================
--- /CKEditor/trunk/_source/core/dom/walker.js	(revision 7396)
+++ /CKEditor/trunk/_source/core/dom/walker.js	(revision 7397)
@@ -9,10 +9,27 @@
 	function iterate( rtl, breakOnFalse )
 	{
+		var range = this.range;
+
 		// Return null if we have reached the end.
 		if ( this._.end )
 			return null;
 
+		// This is the first call. Initialize it.
+		if ( !this._.start )
+		{
+			this._.start = 1;
+
+			// A collapsed range must return null at first call.
+			if ( range.collapsed )
+			{
+				this.end();
+				return null;
+			}
+
+			// Move outside of text node edges.
+			range.optimize();
+		}
+
 		var node,
-			range = this.range,
 			startCt = range.startContainer,
 			endCt = range.endContainer,
@@ -23,17 +40,4 @@
 			type = this.type,
 			getSourceNodeFn = ( rtl ? 'getPreviousSourceNode' : 'getNextSourceNode' );
-
-		// This is the first call. Initialize it.
-		if ( !this._.start )
-		{
-			this._.start = 1;
-
-			// A collapsed range must return null at first call.
-			if ( range.collapsed )
-			{
-				this.end();
-				return null;
-			}
-		}
 
 		// Create the LTR guard function, if necessary.
