From e04fa58dcdf59e480db4a65be3d731d45a99fa3d Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sat, 1 Mar 2008 03:26:35 +0000 Subject: Fix unportable usages of tolower(). On signed-char machines, it is necessary to explicitly cast the output back to char before comparing it to a char value, else we get the wrong result for high-bit-set characters. Found by Rolf Jentsch. Also, fix several places where functions were being called without casting the argument to unsigned char; this is likewise unportable, but we keep making that mistake :-(. These found by buildfarm member salamander, which I will desperately miss if it ever goes belly-up. --- src/backend/utils/adt/like_match.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/backend/utils') diff --git a/src/backend/utils/adt/like_match.c b/src/backend/utils/adt/like_match.c index 915b9bd0d7e..4a8f96c7d40 100644 --- a/src/backend/utils/adt/like_match.c +++ b/src/backend/utils/adt/like_match.c @@ -19,7 +19,7 @@ * Copyright (c) 1996-2008, PostgreSQL Global Development Group * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/like_match.c,v 1.20 2008/01/01 19:45:52 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/like_match.c,v 1.21 2008/03/01 03:26:34 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -71,7 +71,7 @@ */ #ifdef MATCH_LOWER -#define TCHAR(t) tolower((t)) +#define TCHAR(t) ((char) tolower((unsigned char) (t))) #else #define TCHAR(t) (t) #endif -- cgit v1.2.3