Index: /FCKeditor/trunk/_whatsnew.html
===================================================================
--- /FCKeditor/trunk/_whatsnew.html	(revision 331)
+++ /FCKeditor/trunk/_whatsnew.html	(revision 332)
@@ -108,5 +108,8 @@
 			form had a button named "submit" the "Save" command didn't work in Firefox.</li>
 		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/414">#414</a>] If tracing was 
-		globally enabled in Asp.net 2 then the Asp.Net connector did fail.</li>
+		globally enabled in Asp.Net 2.0 then the Asp.Net connector did fail.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/520">#520</a>] The "Select
+			Field" properties dialog was not correctly handling select options with &amp;, &lt;
+			and &gt;.</li>
 	</ul>
 	<h3>
Index: /FCKeditor/trunk/editor/dialog/fck_select.html
===================================================================
--- /FCKeditor/trunk/editor/dialog/fck_select.html	(revision 331)
+++ /FCKeditor/trunk/editor/dialog/fck_select.html	(revision 332)
@@ -59,5 +59,5 @@
 		for ( var i = 0 ; i < oActiveEl.options.length ; i++ )
 		{
-			var sText	= oActiveEl.options[i].innerHTML ;
+			var sText	= HTMLDecode( oActiveEl.options[i].innerHTML ) ;
 			var sValue	= oActiveEl.options[i].value ;
 
Index: /FCKeditor/trunk/editor/dialog/fck_select/fck_select.js
===================================================================
--- /FCKeditor/trunk/editor/dialog/fck_select/fck_select.js	(revision 331)
+++ /FCKeditor/trunk/editor/dialog/fck_select/fck_select.js	(revision 332)
@@ -62,8 +62,8 @@
 	var oTxtValue	= document.getElementById( "txtValue" ) ;
 
-	oListText.options[ iIndex ].innerHTML	= oTxtText.value ;
+	oListText.options[ iIndex ].innerHTML	= HTMLEncode( oTxtText.value ) ;
 	oListText.options[ iIndex ].value		= oTxtText.value ;
 
-	oListValue.options[ iIndex ].innerHTML	= oTxtValue.value ;
+	oListValue.options[ iIndex ].innerHTML	= HTMLEncode( oTxtValue.value ) ;
 	oListValue.options[ iIndex ].value		= oTxtValue.value ;
 
@@ -116,5 +116,5 @@
 
 	var oOption = combo.options[ iActualIndex ] ;
-	var sText	= oOption.innerHTML ;
+	var sText	= HTMLDecode( oOption.innerHTML ) ;
 	var sValue	= oOption.value ;
 
@@ -163,7 +163,32 @@
 		combo.options.add( oOption ) ;
 
-	oOption.innerHTML = optionText.length > 0 ? optionText : '&nbsp;' ;
+	oOption.innerHTML = optionText.length > 0 ? HTMLEncode( optionText ) : '&nbsp;' ;
 	oOption.value     = optionValue ;
 
 	return oOption ;
 }
+
+function HTMLEncode( text )
+{
+	if ( !text )
+		return '' ;
+
+	text = text.replace( /&/g, '&amp;' ) ;
+	text = text.replace( /</g, '&lt;' ) ;
+	text = text.replace( />/g, '&gt;' ) ;
+
+	return text ;
+}
+
+
+function HTMLDecode( text )
+{
+	if ( !text )
+		return '' ;
+
+	text = text.replace( /&gt;/g, '>' ) ;
+	text = text.replace( /&lt;/g, '<' ) ;
+	text = text.replace( /&amp;/g, '&' ) ;
+
+	return text ;
+}
