diff -Nru tremulous/src/game/g_client.c tremulous.temp/src/game/g_client.c
--- tremulous/src/game/g_client.c	2007-02-28 18:31:34.000000000 +0100
+++ tremulous.temp/src/game/g_client.c	2007-02-28 18:32:00.000000000 +0100
@@ -826,26 +826,28 @@
       continue;
 
     // check colors
-    if( ch == Q_COLOR_ESCAPE )
+    if( ch == Q_COLOR_ESCAPE && ( ( *in && *in != Q_COLOR_ESCAPE ) || !*in ) )
     {
-      // solo trailing carat is not a color prefix
-      if( !*in )
-        break;
-
-      // don't allow black in a name, period
-      if( ColorIndex( *in ) == 0 )
-      {
-        in++;
-        continue;
-      }
-
       // make sure room in dest for both chars
       if( len > outSize - 2 )
         break;
 
       *out++ = ch;
-      *out++ = *in++;
       len += 2;
+
+      // solo trailing carat is not a color prefix
+      if( !*in ) {
+        *out++ = COLOR_WHITE;
+        break;
+      }
+
+      // don't allow black in a name, period
+      if( ColorIndex( *in ) == 0 )
+        *out++ = COLOR_WHITE;
+      else
+        *out++ = *in;
+
+      in++;
       continue;
     }
 
