I reproduced the bug with a help of Grzegorz's point for 64-bit box. So, patch is attached and I'm going to commit it

--
Teodor Sigaev                                   E-mail: teo...@sigaev.ru
                                                   WWW: http://www.sigaev.ru/
*** src/backend/tsearch/spell.c.orig    2009-01-29 18:18:03.000000000 +0300
--- src/backend/tsearch/spell.c 2009-01-29 18:20:09.000000000 +0300
***************
*** 521,527 ****
                                (errcode(ERRCODE_CONFIG_FILE_ERROR),
                                 errmsg("multibyte flag character is not 
allowed")));
  
!       Conf->flagval[(unsigned int) *s] = (unsigned char) val;
        Conf->usecompound = true;
  }
  
--- 521,527 ----
                                (errcode(ERRCODE_CONFIG_FILE_ERROR),
                                 errmsg("multibyte flag character is not 
allowed")));
  
!       Conf->flagval[*(unsigned char*) s] = (unsigned char) val;
        Conf->usecompound = true;
  }
  
***************
*** 654,660 ****
                                ptr = repl + (ptr - prepl) + 1;
                                while (*ptr)
                                {
!                                       aflg |= Conf->flagval[(unsigned int) 
*ptr];
                                        ptr++;
                                }
                        }
--- 654,660 ----
                                ptr = repl + (ptr - prepl) + 1;
                                while (*ptr)
                                {
!                                       aflg |= Conf->flagval[*(unsigned char*) 
ptr];
                                        ptr++;
                                }
                        }
***************
*** 735,741 ****
  
                                if (*s && pg_mblen(s) == 1)
                                {
!                                       Conf->flagval[(unsigned int) *s] = 
FF_COMPOUNDFLAG;
                                        Conf->usecompound = true;
                                }
                                oldformat = true;
--- 735,741 ----
  
                                if (*s && pg_mblen(s) == 1)
                                {
!                                       Conf->flagval[*(unsigned char*) s] = 
FF_COMPOUNDFLAG;
                                        Conf->usecompound = true;
                                }
                                oldformat = true;
***************
*** 791,797 ****
                                                
(errcode(ERRCODE_CONFIG_FILE_ERROR),
                                                 errmsg("multibyte flag 
character is not allowed")));
  
!                       flag = (unsigned char) *s;
                        goto nextline;
                }
                if (STRNCMP(recoded, "COMPOUNDFLAG") == 0 || STRNCMP(recoded, 
"COMPOUNDMIN") == 0 ||
--- 791,797 ----
                                                
(errcode(ERRCODE_CONFIG_FILE_ERROR),
                                                 errmsg("multibyte flag 
character is not allowed")));
  
!                       flag = *(unsigned char*) s;
                        goto nextline;
                }
                if (STRNCMP(recoded, "COMPOUNDFLAG") == 0 || STRNCMP(recoded, 
"COMPOUNDMIN") == 0 ||
***************
*** 851,857 ****
  
        while (str && *str)
        {
!               flag |= Conf->flagval[(unsigned int) *str];
                str++;
        }
  
--- 851,857 ----
  
        while (str && *str)
        {
!               flag |= Conf->flagval[*(unsigned char*) str];
                str++;
        }
  
-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Reply via email to