Index: /CKEditor/trunk/CHANGES.html
===================================================================
--- /CKEditor/trunk/CHANGES.html	(revision 3817)
+++ /CKEditor/trunk/CHANGES.html	(revision 3818)
@@ -98,4 +98,5 @@
 		<li><a href="http://dev.fckeditor.net/ticket/3864">#3864</a> : [FF]Document is not editable after inserting element on a fresh page.</li>
 		<li><a href="http://dev.fckeditor.net/ticket/3883">#3883</a> : Fixed removing inline style logic incorrect on Firefox2.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3884">#3884</a> : Empty "href" attribute was duplicated on output data.</li>
 	</ul>
 	<h3>
Index: /CKEditor/trunk/_source/plugins/htmldataprocessor/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/htmldataprocessor/plugin.js	(revision 3817)
+++ /CKEditor/trunk/_source/plugins/htmldataprocessor/plugin.js	(revision 3818)
@@ -115,12 +115,11 @@
 					if ( attribs )
 					{
-						// Remove duplicates that have been saved with our
-						// special names.
-						if ( attribs._cke_saved_name )
-							delete attribs.name;
-						if ( attribs._cke_saved_href )
-							delete attribs.href;
-						if ( attribs._cke_saved_src )
-							delete attribs.src;
+						var attributeNames = [ 'name', 'href', 'src' ],
+							savedAttributeName;
+						for ( var i = 0 ; i < attributeNames.length ; i++ )
+						{
+							savedAttributeName = '_cke_saved_' + attributeNames[ i ];
+							savedAttributeName in attribs && ( delete attribs[ savedAttributeName ] );
+						}
 					}
 				},
Index: /CKEditor/trunk/_source/tests/plugins/htmldataprocessor/htmldataprocessor.html
===================================================================
--- /CKEditor/trunk/_source/tests/plugins/htmldataprocessor/htmldataprocessor.html	(revision 3817)
+++ /CKEditor/trunk/_source/tests/plugins/htmldataprocessor/htmldataprocessor.html	(revision 3818)
@@ -271,4 +271,16 @@
 		},
 
+		/**
+		 * Test empty value attributes.
+		 */
+		test_ticket_3884 : function()
+		{
+			var editor = CKEDITOR.instances.editor1,
+				dataProcessor = editor.dataProcessor;
+			dataProcessor.writer = new CKEDITOR.htmlParser.basicWriter();
+
+			assert.areSame( '<p><a href="" name="">emptylink</a></p>',
+				dataProcessor.toDataFormat( dataProcessor.toHtml( '<p><a href="" name="">emptylink</a></p>' ) ) );
+		},
 
 		name : document.title
@@ -276,5 +288,5 @@
 })() );
 
-//window.onload = testCase.test_ticket_3407;
+//window.onload = testCase.test_ticket_3884;
 	//]]>
 	</script>
