Index: wysiwyg.js
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/wysiwyg/wysiwyg.js,v
retrieving revision 1.15.2.3
diff -u -p -r1.15.2.3 wysiwyg.js
--- wysiwyg.js	25 Sep 2010 00:47:20 -0000	1.15.2.3
+++ wysiwyg.js	7 Nov 2010 11:58:45 -0000
@@ -212,6 +212,21 @@ Drupal.wysiwyg.getParams = function(elem
 };
 
 /**
+ * Removes unwanted 'blank' <p> and <br /> tags from an HTML string.
+ *
+ * Editors sometimes leave tags like <p>&nbsp;</p> when nothing was entered.
+ * This function removes those tags to allow for truly empty fields.
+ * It also removes an empty div left by Firebug if it was enabled.
+ *
+ * @param content
+ *  An HTML string to remove tags from.
+ */
+Drupal.wysiwyg.removeBlankTags = function(content) {
+  content = content.replace(/<div firebugversion="(?:\d|\.)+" id="_firebugConsole" style="display: none;">&nbsp;<\/div>/i, '');
+  return content.replace(/^(?:<p>(?:&nbsp;|\s*)<\/p>|<br(?:\s\/)?>(?:\n|\r)*)*$/i, '');
+}
+
+/**
  * Allow certain editor libraries to initialize before the DOM is loaded.
  */
 Drupal.wysiwygInit();
Index: editors/js/ckeditor-3.0.js
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/wysiwyg/editors/js/ckeditor-3.0.js,v
retrieving revision 1.2.4.5
diff -u -p -r1.2.4.5 ckeditor-3.0.js
--- editors/js/ckeditor-3.0.js	17 Nov 2009 15:31:33 -0000	1.2.4.5
+++ editors/js/ckeditor-3.0.js	7 Nov 2010 11:58:45 -0000
@@ -79,14 +79,16 @@ Drupal.wysiwyg.editor.attach.ckeditor = 
     pluginsLoaded: function(ev) {
       // Override the conversion methods to let Drupal plugins modify the data.
       var editor = ev.editor;
-      if (editor.dataProcessor && Drupal.settings.wysiwyg.plugins[params.format]) {
+      if (editor.dataProcessor) {
         editor.dataProcessor.toHtml = CKEDITOR.tools.override(editor.dataProcessor.toHtml, function(originalToHtml) {
           // Convert raw data for display in WYSIWYG mode.
           return function(data, fixForBody) {
-            for (var plugin in Drupal.settings.wysiwyg.plugins[params.format].drupal) {
-              if (typeof Drupal.wysiwyg.plugins[plugin].attach == 'function') {
-                data = Drupal.wysiwyg.plugins[plugin].attach(data, Drupal.settings.wysiwyg.plugins.drupal[plugin], editor.name);
-                data = Drupal.wysiwyg.instances[params.field].prepareContent(data);
+            if (Drupal.settings.wysiwyg.plugins[params.format]) {
+              for (var plugin in Drupal.settings.wysiwyg.plugins[params.format].drupal) {
+                if (typeof Drupal.wysiwyg.plugins[plugin].attach == 'function') {
+                  data = Drupal.wysiwyg.plugins[plugin].attach(data, Drupal.settings.wysiwyg.plugins.drupal[plugin], editor.name);
+                  data = Drupal.wysiwyg.instances[params.field].prepareContent(data);
+                }
               }
             }
             return originalToHtml.call(this, data, fixForBody);
@@ -96,12 +98,14 @@ Drupal.wysiwyg.editor.attach.ckeditor = 
           // Convert WYSIWYG mode content to raw data.
           return function(data, fixForBody) {
             data = originalToDataFormat.call(this, data, fixForBody);
-            for (var plugin in Drupal.settings.wysiwyg.plugins[params.format].drupal) {
-              if (typeof Drupal.wysiwyg.plugins[plugin].detach == 'function') {
-                data = Drupal.wysiwyg.plugins[plugin].detach(data, Drupal.settings.wysiwyg.plugins.drupal[plugin], editor.name);
+            if (Drupal.settings.wysiwyg.plugins[params.format]) {
+              for (var plugin in Drupal.settings.wysiwyg.plugins[params.format].drupal) {
+                if (typeof Drupal.wysiwyg.plugins[plugin].detach == 'function') {
+                  data = Drupal.wysiwyg.plugins[plugin].detach(data, Drupal.settings.wysiwyg.plugins.drupal[plugin], editor.name);
+                }
               }
             }
-            return data;
+            return Drupal.wysiwyg.removeBlankTags(data);
           };
         });
       }
Index: editors/js/fckeditor-2.6.js
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/wysiwyg/editors/js/fckeditor-2.6.js,v
retrieving revision 1.16.2.5
diff -u -p -r1.16.2.5 fckeditor-2.6.js
--- editors/js/fckeditor-2.6.js	6 Nov 2010 17:57:36 -0000	1.16.2.5
+++ editors/js/fckeditor-2.6.js	7 Nov 2010 11:58:45 -0000
@@ -100,7 +100,7 @@ Drupal.wysiwyg.editor.instance.fckeditor
           }
         }
       }
-      return data;
+      return Drupal.wysiwyg.removeBlankTags(data);
     };
     instance.FCK.DataProcessor = new wysiwygDataProcessor();
   },
