diff --git a/src/backend/utils/adt/timestamp.c b/src/backend/utils/adt/timestamp.c
index 8ba3209fda5491629f35ebb14deb80e3e9f1cbca..ce30bb6e9fa65e503beeea7ccd9cf82bf050bd09 100644
--- a/src/backend/utils/adt/timestamp.c
+++ b/src/backend/utils/adt/timestamp.c
@@ -511,7 +511,7 @@ parse_sane_timezone(struct pg_tm *tm, text *zone)
 	 * as invalid, it's enough to disallow having a digit in the first
 	 * position of our input string.
 	 */
-	if (isdigit(*tzname))
+	if (isdigit((unsigned char) *tzname))
 		ereport(ERROR,
 				(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
 				 errmsg("invalid input syntax for numeric time zone: \"%s\"",