Index: /CKEditor/trunk/CHANGES.html
===================================================================
--- /CKEditor/trunk/CHANGES.html	(revision 3968)
+++ /CKEditor/trunk/CHANGES.html	(revision 3969)
@@ -183,4 +183,5 @@
 		<li><a href="http://dev.fckeditor.net/ticket/4101">#4101</a> : Now it is possible to close dialog before gets focus.</li>
 		<li><a href="http://dev.fckeditor.net/ticket/4075">#4075</a> : [IE6/7]Fixed apply custom inline style with "class" attribute failed.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4087">#4087</a> : [Firefox]Fixed extra blocks created on create list when full document selected.</li>
 	</ul>
 	<h3>
Index: /CKEditor/trunk/_source/plugins/domiterator/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/domiterator/plugin.js	(revision 3968)
+++ /CKEditor/trunk/_source/plugins/domiterator/plugin.js	(revision 3969)
@@ -205,4 +205,7 @@
 					range.setEndAt( currentNode, CKEDITOR.POSITION_AFTER_END );
 
+				currentNode = currentNode.getNextSourceNode( continueFromSibling, null, lastNode );
+				isLast = !currentNode;
+
 				// We have found a block boundary. Let's close the range and move out of the
 				// loop.
@@ -212,8 +215,14 @@
 						startPath = new CKEDITOR.dom.elementPath( range.startContainer ),
 						endPath = new CKEDITOR.dom.elementPath( range.endContainer );
+
+					// Drop the range if it only contains bookmark nodes.(#4087)
 					if ( boundaryNodes.startNode.equals( boundaryNodes.endNode )
-							&& boundaryNodes.startNode.getParent().equals( startPath.blockLimit )
-							&& boundaryNodes.startNode.type == CKEDITOR.NODE_ELEMENT && boundaryNodes.startNode.getAttribute( '_fck_bookmark' ) )
+						&& boundaryNodes.startNode.getParent().equals( startPath.blockLimit )
+						&& boundaryNodes.startNode.type == CKEDITOR.NODE_ELEMENT
+						&& boundaryNodes.startNode.getAttribute( '_fck_bookmark' ) )
+					{
 						range = null;
+						this._.nextNode = null;
+					}
 					else
 						break;
@@ -223,5 +232,4 @@
 					break;
 
-				currentNode = currentNode.getNextSourceNode( continueFromSibling, null, lastNode );
 			}
 
