Index: FCKeditor/trunk/editor/_source/classes/fckdomrangeiterator.js
===================================================================
--- FCKeditor/trunk/editor/_source/classes/fckdomrangeiterator.js	(revision 1211)
+++ FCKeditor/trunk/editor/_source/classes/fckdomrangeiterator.js	(revision 1218)
@@ -126,4 +126,9 @@
 					}
 
+					// The range must finish right before the boundary,
+					// including possibly skipped empty spaces. (#1603)
+					if ( range )
+						range.SetEnd( currentNode, 3, true ) ;
+
 					closeRange = true ;
 				}
@@ -182,4 +187,5 @@
 
 					currentNode = parentNode ;
+					includeNode = true ;
 					isLast = ( currentNode == lastNode ) ;
 					continueFromSibling = true ;
Index: FCKeditor/trunk/editor/_source/classes/fckelementpath.js
===================================================================
--- FCKeditor/trunk/editor/_source/classes/fckelementpath.js	(revision 1211)
+++ FCKeditor/trunk/editor/_source/classes/fckelementpath.js	(revision 1218)
@@ -47,6 +47,7 @@
 				if ( FCKListsLib.PathBlockLimitElements[ sElementName ] != null )
 				{
-					// DIV is considered the Block, if no block is available (#525).
-					if ( !eBlock && sElementName == 'div' )
+					// DIV is considered the Block, if no block is available (#525)
+					// and if it doesn't contain other blocks.
+					if ( !eBlock && sElementName == 'div' && !FCKElementPath._CheckHasBlock( e ) )
 						eBlock = e ;
 					else
@@ -68,3 +69,20 @@
 }
 
+/**
+ * Check if an element contains any block element.
+ */
+FCKElementPath._CheckHasBlock = function( element )
+{
+	var childNodes = element.childNodes ;
+	
+	for ( var i = 0, count = childNodes.length ; i < count ; i++ )
+	{
+		var child = childNodes[i] ;
+		
+		if ( child.nodeType == 1 && FCKListsLib.BlockElements[ child.nodeName.toLowerCase() ] )
+			return true ;
+	}
+	
+	return false ;
+}
 
Index: FCKeditor/trunk/_whatsnew.html
===================================================================
--- FCKeditor/trunk/_whatsnew.html	(revision 1211)
+++ FCKeditor/trunk/_whatsnew.html	(revision 1218)
@@ -60,4 +60,6 @@
 		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1643">#1643</a>] Resolved
 			several "strict warning" messages in Firefox when running FCKeditor.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1603">#1603</a>] Certain
+			specific markup was making FCKeditor entering in a loop, blocking its execution.</li>
 	</ul>
 	<p>
