Re: Text search segmentation fault

Поиск
Список
Период
Сортировка
От Teodor Sigaev
Тема Re: Text search segmentation fault
Дата
Msg-id 4981CAA1.1090205@sigaev.ru
обсуждение исходный текст
Ответ на Text search segmentation fault  (Tommy Gildseth <tommy.gildseth@usit.uio.no>)
Ответы Re: Text search segmentation fault
Re: Text search segmentation fault
Re: Text search segmentation fault
Re: Text search segmentation fault
Список pgsql-general
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: teodor@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++;
      }


В списке pgsql-general по дате отправления:

Предыдущее
От: Mark Styles
Дата:
Сообщение: Changing owner of pg_toast tables
Следующее
От: Teodor Sigaev
Дата:
Сообщение: Re: Text search segmentation fault