From 89ee5b89a6e82a6b0a5a44bb5d2776372614e01c Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Fri, 2 Apr 2004 00:41:18 +0000
Subject: [PATCH] Fix some more compatibility issues (ctype.h macros must never
 be passed signed chars...)

---
 contrib/tsearch2/dict_syn.c |  4 ++--
 contrib/tsearch2/prs_dcfg.c | 16 ++++++++--------
 contrib/tsearch2/tsvector.c |  7 ++++---
 3 files changed, 14 insertions(+), 13 deletions(-)

diff --git a/contrib/tsearch2/dict_syn.c b/contrib/tsearch2/dict_syn.c
index 8364223be40..046a5949039 100644
--- a/contrib/tsearch2/dict_syn.c
+++ b/contrib/tsearch2/dict_syn.c
@@ -37,14 +37,14 @@ findwrd(char *in, char **end)
 	char	   *start;
 
 	*end = NULL;
-	while (*in && isspace(*in))
+	while (*in && isspace((unsigned char) *in))
 		in++;
 
 	if (!in)
 		return NULL;
 	start = in;
 
-	while (*in && !isspace(*in))
+	while (*in && !isspace((unsigned char) *in))
 		in++;
 
 	*end = in;
diff --git a/contrib/tsearch2/prs_dcfg.c b/contrib/tsearch2/prs_dcfg.c
index 6b553e45256..0837451f227 100644
--- a/contrib/tsearch2/prs_dcfg.c
+++ b/contrib/tsearch2/prs_dcfg.c
@@ -66,12 +66,12 @@ parse_cfgdict(text *in, Map ** m)
 	{
 		if (state == CS_WAITKEY)
 		{
-			if (isalpha(*ptr))
+			if (isalpha((unsigned char) *ptr))
 			{
 				begin = ptr;
 				state = CS_INKEY;
 			}
-			else if (!isspace(*ptr))
+			else if (!isspace((unsigned char) *ptr))
 				ereport(ERROR,
 						(errcode(ERRCODE_SYNTAX_ERROR),
 						 errmsg("syntax error"),
@@ -80,7 +80,7 @@ parse_cfgdict(text *in, Map ** m)
 		}
 		else if (state == CS_INKEY)
 		{
-			if (isspace(*ptr))
+			if (isspace((unsigned char) *ptr))
 			{
 				mptr->key = nstrdup(begin, ptr - begin);
 				state = CS_WAITEQ;
@@ -90,7 +90,7 @@ parse_cfgdict(text *in, Map ** m)
 				mptr->key = nstrdup(begin, ptr - begin);
 				state = CS_WAITVALUE;
 			}
-			else if (!isalpha(*ptr))
+			else if (!isalpha((unsigned char) *ptr))
 				ereport(ERROR,
 						(errcode(ERRCODE_SYNTAX_ERROR),
 						 errmsg("syntax error"),
@@ -101,7 +101,7 @@ parse_cfgdict(text *in, Map ** m)
 		{
 			if (*ptr == '=')
 				state = CS_WAITVALUE;
-			else if (!isspace(*ptr))
+			else if (!isspace((unsigned char) *ptr))
 				ereport(ERROR,
 						(errcode(ERRCODE_SYNTAX_ERROR),
 						 errmsg("syntax error"),
@@ -115,7 +115,7 @@ parse_cfgdict(text *in, Map ** m)
 				begin = ptr + 1;
 				state = CS_INVALUE;
 			}
-			else if (!isspace(*ptr))
+			else if (!isspace((unsigned char) *ptr))
 			{
 				begin = ptr;
 				state = CS_IN2VALUE;
@@ -134,7 +134,7 @@ parse_cfgdict(text *in, Map ** m)
 		}
 		else if (state == CS_IN2VALUE)
 		{
-			if (isspace(*ptr) || *ptr == ',')
+			if (isspace((unsigned char) *ptr) || *ptr == ',')
 			{
 				mptr->value = nstrdup(begin, ptr - begin);
 				mptr++;
@@ -147,7 +147,7 @@ parse_cfgdict(text *in, Map ** m)
 		{
 			if (*ptr == ',')
 				state = CS_WAITKEY;
-			else if (!isspace(*ptr))
+			else if (!isspace((unsigned char) *ptr))
 				ereport(ERROR,
 						(errcode(ERRCODE_SYNTAX_ERROR),
 						 errmsg("syntax error"),
diff --git a/contrib/tsearch2/tsvector.c b/contrib/tsearch2/tsvector.c
index cc2e96c2257..827627b068d 100644
--- a/contrib/tsearch2/tsvector.c
+++ b/contrib/tsearch2/tsvector.c
@@ -310,7 +310,7 @@ gettoken_tsvector(TI_IN_STATE * state)
 		}
 		else if (state->state == INPOSINFO)
 		{
-			if (isdigit(*(state->prsbuf)))
+			if (isdigit((unsigned char) *(state->prsbuf)))
 			{
 				if (state->alen == 0)
 				{
@@ -373,9 +373,10 @@ gettoken_tsvector(TI_IN_STATE * state)
 							 errmsg("syntax error")));
 				state->pos[*(uint16 *) (state->pos)].weight = 0;
 			}
-			else if (isspace(*(state->prsbuf)) || *(state->prsbuf) == '\0')
+			else if (isspace((unsigned char) *(state->prsbuf)) ||
+					 *(state->prsbuf) == '\0')
 				return 1;
-			else if (!isdigit(*(state->prsbuf)))
+			else if (!isdigit((unsigned char) *(state->prsbuf)))
 				ereport(ERROR,
 						(errcode(ERRCODE_SYNTAX_ERROR),
 						 errmsg("syntax error")));
-- 
GitLab