diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index e2cbeb4741ee2bb2975bd52dbe3bc6b6f5ac8886..b038eaa640a617e53b4cb55c060dc752d4695a5c 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,7 @@
+2005-07-15  Ben Elliston  <bje@au.ibm.com>
+
+	* regex.c (TRANSLATE): Cast rhs of ternary expression to char.
+
 2005-07-12  Ben Elliston  <bje@au.ibm.com>
 
 	* floatformat.c (floatformat_to_double): Add a comment about a
diff --git a/libiberty/regex.c b/libiberty/regex.c
index b7be99d25b2b9286fa06faefe7f425eb851b6091..951f2d10f33a8c969984bbe35e0d0d57e0979ece 100644
--- a/libiberty/regex.c
+++ b/libiberty/regex.c
@@ -2,7 +2,9 @@
    version 0.12.
    (Implements POSIX draft P1003.2/D11.2, except for some of the
    internationalization features.)
-   Copyright (C) 1993-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+
+   Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+   2002, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -1918,7 +1920,7 @@ static reg_errcode_t byte_compile_range (unsigned int range_start,
    ? (char) translate[(unsigned char) (d)] : (d))
 # else /* BYTE */
 #   define TRANSLATE(d) \
-  (translate ? (char) translate[(unsigned char) (d)] : (d))
+  (translate ? (char) translate[(unsigned char) (d)] : (char) (d))
 #  endif /* WCHAR */
 # endif