Index: wp-includes/formatting.php
===================================================================
--- wp-includes/formatting.php	(revision 15806)
+++ wp-includes/formatting.php	(working copy)
@@ -1,3 +1,4 @@
+
 <?php
 /**
  * Main WordPress Formatting API.
@@ -993,7 +994,7 @@
 	$stacksize = 0;
 	$tagqueue = '';
 	$newtext = '';
-	$single_tags = array('br', 'hr', 'img', 'input'); // Known single-entity/self-closing tags
+	$single_tags = array('area', 'base', 'basefont', 'br', 'col', 'command', 'embed', 'frame', 'hr', 'img', 'input', 'isindex', 'link', 'meta', 'param', 'source'); // Known single-entity/self-closing tags
 	$nestable_tags = array('blockquote', 'div', 'span'); // Tags that can be immediately nested within themselves
 
 	// WP bug fix for comments - in case you REALLY meant to type '< !--'
@@ -1041,26 +1042,35 @@
 
 			// Tag Cleaning
 
-			// If self-closing or '', don't do anything.
-			if ( substr($regex[2],-1) == '/' || $tag == '' ) {
+			// If it's an empty tag "< >", do nothing
+			if ( '' == $tag ) {
 				// do nothing
 			}
+			// ElseIf it presents itself as a self-closing tag...
+			elseif ( substr($regex[2],-1) == '/' ) {
+				// ...but it isn't a known single-entity self-closing tag, then don't let it be treated as such and
+				// immediately close it with a closing tag (the tag will encapsulate no text as a result)
+				if ( !in_array($tag, $single_tags) )
+					$regex[2] = substr($regex[2], 0, -1) . "></$tag";
+			}
 			// ElseIf it's a known single-entity tag but it doesn't close itself, do so
 			elseif ( in_array($tag, $single_tags) ) {
 				$regex[2] .= '/';
-			} else {	// Push the tag onto the stack
+			}
+			// Else it's not a single-entity tag
+			else {
 				// If the top of the stack is the same as the tag we want to push, close previous tag
 				if ( $stacksize > 0 && !in_array($tag, $nestable_tags) && $tagstack[$stacksize - 1] == $tag ) {
-					$tagqueue = '</' . array_pop ($tagstack) . '>';
+					$tagqueue = '</' . array_pop($tagstack) . '>';
 					$stacksize--;
 				}
-				$stacksize = array_push ($tagstack, $tag);
+				$stacksize = array_push($tagstack, $tag);
 			}
 
 			// Attributes
 			$attributes = $regex[2];
 			if( !empty($attributes) )
-				$attributes = ' '.$attributes;
+				$attributes = ' ' . $attributes;
 
 			$tag = '<' . $tag . $attributes . '>';
 			//If already queuing a close tag, then put this tag on, too

