diff --git a/src/backend/regex/regc_color.c b/src/backend/regex/regc_color.c
index 33a6c7920658909fc333a7d3a4ae46321407aeeb..0264760ea70ecde891f46b21a7c93684c6c7ed87 100644
--- a/src/backend/regex/regc_color.c
+++ b/src/backend/regex/regc_color.c
@@ -28,7 +28,7 @@
  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $PostgreSQL: pgsql/src/backend/regex/regc_color.c,v 1.5 2005/10/15 02:49:24 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/regex/regc_color.c,v 1.6 2007/10/06 16:18:09 tgl Exp $
  *
  *
  * Note that there are some incestuous relationships between this code and
@@ -722,13 +722,17 @@ dumpcolors(struct colormap * cm,
 			else
 				fprintf(f, "#%2ld%s(%2d): ", (long) co,
 						has, cd->nchrs);
-			/* it's hard to do this more efficiently */
-			for (c = CHR_MIN; c < CHR_MAX; c++)
+			/*
+			 * Unfortunately, it's hard to do this next bit more efficiently.
+			 *
+			 * Spencer's original coding has the loop iterating from CHR_MIN
+			 * to CHR_MAX, but that's utterly unusable for 32-bit chr.
+			 * For debugging purposes it seems fine to print only chr
+			 * codes up to 1000 or so.
+			 */
+			for (c = CHR_MIN; c < 1000; c++)
 				if (GETCOLOR(cm, c) == co)
 					dumpchr(c, f);
-			assert(c == CHR_MAX);
-			if (GETCOLOR(cm, c) == co)
-				dumpchr(c, f);
 			fprintf(f, "\n");
 		}
 }