Index: /CKEditor/trunk/_source/core/event.js
===================================================================
--- /CKEditor/trunk/_source/core/event.js	(revision 3083)
+++ /CKEditor/trunk/_source/core/event.js	(revision 3084)
@@ -217,16 +217,27 @@
 					if ( event )
 					{
-						// Loop through all listeners.
-						for ( var i = 0, listeners = event.listeners ; i < listeners.length ; i++ )
+						var listeners = event.listeners;
+
+						if ( listeners.length )
 						{
-							// Call the listener, passing the event data.
-							var retData = listeners[i].call( this, editor, data, stopEvent, cancelEvent );
-
-							if ( typeof retData != 'undefined' )
-								data = retData;
-
-							// No further calls is stopped or canceled.
-							if ( stopped || canceled )
-								break;
+							// As some listeners may remove themselves from the
+							// event, the original array length is dinamic. So,
+							// let's make a copy of all listeners, so we are
+							// sure we'll call all of them.
+							listeners = listeners.slice( 0 );
+
+							// Loop through all listeners.
+							for ( var i = 0 ; i < listeners.length ; i++ )
+							{
+								// Call the listener, passing the event data.
+								var retData = listeners[i].call( this, editor, data, stopEvent, cancelEvent );
+
+								if ( typeof retData != 'undefined' )
+									data = retData;
+
+								// No further calls is stopped or canceled.
+								if ( stopped || canceled )
+									break;
+							}
 						}
 					}
Index: /CKEditor/trunk/_source/plugins/editingblock/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/editingblock/plugin.js	(revision 3083)
+++ /CKEditor/trunk/_source/plugins/editingblock/plugin.js	(revision 3084)
@@ -48,9 +48,23 @@
 			editor.on( 'afterSetData', function()
 				{
-					if ( !isHandlingData && editor.mode )
+					if ( !isHandlingData )
 					{
-						isHandlingData = true;
-						getMode( editor ).loadData( editor.getData() );
-						isHandlingData = false;
+						function setData()
+						{
+							isHandlingData = true;
+							getMode( editor ).loadData( editor.getData() );
+							isHandlingData = false;
+						}
+
+						if ( editor.mode )
+							setData();
+						else
+						{
+							editor.on( 'mode', function()
+								{
+									setData();
+									editor.removeListener( 'mode', arguments.callee );
+								});
+						}
 					}
 				});
