Index: includes/theme.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/theme.inc,v
retrieving revision 1.523
diff -u -r1.523 theme.inc
--- includes/theme.inc	11 Sep 2009 15:17:00 -0000	1.523
+++ includes/theme.inc	12 Sep 2009 15:28:49 -0000
@@ -1948,17 +1948,29 @@
  * @see template_process_username()
  */
 function theme_username($object) {
-  if (isset($object->link_path)) {
-    // We have a link path, so we should generate a link using l().
-    // Additional classes may be added as array elements like
-    // $object->link_options['attributes']['class'][] = 'myclass';
-    $output = l($object->name . $object->extra, $object->link_path, $object->link_options);
+  if (empty($object->uid)) {
+    $output = check_plain(variable_get('anonymous', t('Anonymous')));
   }
   else {
-    // Modules may have added important attributes so they must be included
-    // in the output. Additional classes may be added as array elements like
-    // $object->attributes['class'][] = 'myclass';
-    $output = '<span' . drupal_attributes($object->attributes) . '>' . $object->name . $object->extra . '</span>';
+    $name = $object->name;
+    if (isset($object->extra)) {
+      $name .= $object->extra;
+    }
+    if (isset($object->link_path)) {
+      // We have a link path, so we should generate a link using l().
+      // Additional classes may be added as array elements like
+      // $object->link_options['attributes']['class'][] = 'myclass';
+      $output = l($name, $object->link_path, $object->link_options);
+    }
+    elseif (isset($object->attributes)) {
+      // Modules may have added important attributes so they must be included
+      // in the output. Additional classes may be added as array elements like
+      // $object->attributes['class'][] = 'myclass';
+      $output = '<span' . drupal_attributes($object->attributes) . '>' . $name . '</span>';
+    }
+    else {
+      $output = $name;
+    }
   }
   return $output;
 }
