diff --git a/include/ChangeLog b/include/ChangeLog
index 66f6249ce6da8135686c3189f885028f4a7e1eed..1636e982f79bff18016bb7429e6d19d81c4d3c90 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,8 @@
+2008-07-07  Joel Brobecker  <brobecker@adacore.com>
+
+	* safe-ctype.h: Add #include of ctype.h before redefining
+	the ctype.h macros.
+
 2008-07-04  Joel Brobecker  <brobecker@adacore.com>
 
 	* safe-ctype.h: Remove #error when detecting that ctype.h has been
diff --git a/include/safe-ctype.h b/include/safe-ctype.h
index b3e911e07bd47218f067938e87b61b48cbb35c23..0266bf1aa269c38d93f461c6ba3981c11ab0ee77 100644
--- a/include/safe-ctype.h
+++ b/include/safe-ctype.h
@@ -116,7 +116,10 @@ extern const unsigned char  _sch_tolower[256];
    from ctype.h.  Initially, the approach was to produce an error when
    detecting that ctype.h has been included.  But this was causing
    trouble as ctype.h might get indirectly included as a result of
-   including another system header (for instance gnulib's stdint.h).  */
+   including another system header (for instance gnulib's stdint.h).
+   So we include ctype.h here and then immediately redefine its macros.  */
+
+#include <ctype.h>
 #undef isalpha
 #define isalpha(c) do_not_use_isalpha_with_safe_ctype
 #undef isalnum