Index: _source/plugins/selection/plugin.js
===================================================================
--- _source/plugins/selection/plugin.js	(revision 4876)
+++ _source/plugins/selection/plugin.js	Wed Jan 27 01:44:58 CST 2010
@@ -459,17 +459,20 @@
 								testRange = range.duplicate();
 
 								testRange.moveToElementText( child );
-								testRange.collapse();
 
-								var comparison = testRange.compareEndPoints( 'StartToStart', range );
+								var comparisonStart = testRange.compareEndPoints( 'StartToStart', range ),
+										comparisonEnd = testRange.compareEndPoints( 'EndToStart', range );
 
-								if ( comparison > 0 )
+								testRange.collapse();
+
+								if ( comparisonStart > 0 )
 									break;
-								else if ( comparison === 0 )
-									return {
-										container : parent,
-										offset : i
-									};
+								// When selection stay at the side of certain self-closing elements, e.g. BR,
+								// our comparison will never shows an equality. (#4824)
+								else if ( comparisonStart === 0 || comparisonEnd == 1 && comparisonStart == -1 )
+									return { container : parent, offset : i };
+								else if( comparisonEnd === 0 )
+									return { container : parent, offset : i + 1 };
 
 								testRange = null;
 							}
