mirror of
https://github.com/postgres/postgres.git
synced 2025-07-27 12:41:57 +03:00
Make sure that all <ctype.h> routines are called with unsigned char
values; it's not portable to call them with signed chars. I recall doing this for the last release, but a few more uncasted calls have snuck in.
This commit is contained in:
@ -253,17 +253,18 @@ metaphone(PG_FUNCTION_ARGS)
|
||||
* accesssing the array directly... */
|
||||
|
||||
/* Look at the next letter in the word */
|
||||
#define Next_Letter (toupper(word[w_idx+1]))
|
||||
#define Next_Letter (toupper((unsigned char) word[w_idx+1]))
|
||||
/* Look at the current letter in the word */
|
||||
#define Curr_Letter (toupper(word[w_idx]))
|
||||
#define Curr_Letter (toupper((unsigned char) word[w_idx]))
|
||||
/* Go N letters back. */
|
||||
#define Look_Back_Letter(n) (w_idx >= n ? toupper(word[w_idx-n]) : '\0')
|
||||
#define Look_Back_Letter(n) \
|
||||
(w_idx >= (n) ? toupper((unsigned char) word[w_idx-(n)]) : '\0')
|
||||
/* Previous letter. I dunno, should this return null on failure? */
|
||||
#define Prev_Letter (Look_Back_Letter(1))
|
||||
/* Look two letters down. It makes sure you don't walk off the string. */
|
||||
#define After_Next_Letter (Next_Letter != '\0' ? toupper(word[w_idx+2]) \
|
||||
: '\0')
|
||||
#define Look_Ahead_Letter(n) (toupper(Lookahead(word+w_idx, n)))
|
||||
#define After_Next_Letter \
|
||||
(Next_Letter != '\0' ? toupper((unsigned char) word[w_idx+2]) : '\0')
|
||||
#define Look_Ahead_Letter(n) toupper((unsigned char) Lookahead(word+w_idx, n))
|
||||
|
||||
|
||||
/* Allows us to safely look ahead an arbitrary # of letters */
|
||||
@ -291,7 +292,7 @@ Lookahead(char *word, int how_far)
|
||||
#define Phone_Len (p_idx)
|
||||
|
||||
/* Note is a letter is a 'break' in the word */
|
||||
#define Isbreak(c) (!isalpha(c))
|
||||
#define Isbreak(c) (!isalpha((unsigned char) (c)))
|
||||
|
||||
|
||||
int
|
||||
@ -336,7 +337,7 @@ _metaphone(
|
||||
|
||||
/*-- The first phoneme has to be processed specially. --*/
|
||||
/* Find our first letter */
|
||||
for (; !isalpha(Curr_Letter); w_idx++)
|
||||
for (; !isalpha((unsigned char) (Curr_Letter)); w_idx++)
|
||||
{
|
||||
/* On the off chance we were given nothing but crap... */
|
||||
if (Curr_Letter == '\0')
|
||||
@ -435,7 +436,7 @@ _metaphone(
|
||||
*/
|
||||
|
||||
/* Ignore non-alphas */
|
||||
if (!isalpha(Curr_Letter))
|
||||
if (!isalpha((unsigned char) (Curr_Letter)))
|
||||
continue;
|
||||
|
||||
/* Drop duplicates, except CC */
|
||||
|
Reference in New Issue
Block a user