Index: /CKEditor/trunk/CHANGES.html
===================================================================
--- /CKEditor/trunk/CHANGES.html	(revision 4041)
+++ /CKEditor/trunk/CHANGES.html	(revision 4042)
@@ -225,4 +225,6 @@
 			in Source mode even if forcePasteAsPlainText = true.</li>
 		<li><a href="http://dev.fckeditor.net/ticket/4129">#4129</a> : [FF]Unable to remove list with Ctrl-A.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4172">#4172</a> : [Safari] The trailing 
+			&lt;br&gt; was not been always added to blank lines ending with &amp;nbsp;.</li>
 	</ul>
 	<h3>
Index: /CKEditor/trunk/_source/plugins/htmldataprocessor/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/htmldataprocessor/plugin.js	(revision 4041)
+++ /CKEditor/trunk/_source/plugins/htmldataprocessor/plugin.js	(revision 4042)
@@ -7,5 +7,6 @@
 {
 	// Regex to scan for &nbsp; at the end of blocks, which are actually placeholders.
-	var tailNbspRegex = /^[\t\r\n ]*&nbsp;$/;
+	// Safari transforms the &nbsp; to \xa0. (#4172)
+	var tailNbspRegex = /^[\t\r\n ]*(?:&nbsp;|\xa0)$/;
 
 	var protectedSourceMarker = '{cke_protected}';
Index: /CKEditor/trunk/_source/tests/plugins/styles/styles.html
===================================================================
--- /CKEditor/trunk/_source/tests/plugins/styles/styles.html	(revision 4041)
+++ /CKEditor/trunk/_source/tests/plugins/styles/styles.html	(revision 4042)
@@ -579,4 +579,8 @@
 
 			var result = getInnerHtmlParsed( element );
+
+			if ( CKEDITOR.env.webkit )
+				result = result.replace( /\xa0/g, '&nbsp;' );
+
 			assert.areSame( '<p>&nbsp;paragraph1&nbsp; paragraph1<br />paragraph2</p><p>&nbsp;para&nbsp;&nbsp; graph3</p>',
 					 result );
