From: Adam Dickmeiss Date: Sat, 26 Jan 2008 15:32:05 +0000 (+0000) Subject: Extend REGEX_CHARS with more "reserved" regex chars. X-Git-Tag: ZEBRA.2.0.26~4 X-Git-Url: http://git.indexdata.com/?p=idzebra-moved-to-github.git;a=commitdiff_plain;h=1df86c90a941584991fcb5a4ea3f070a4e1c45d2 Extend REGEX_CHARS with more "reserved" regex chars. Added the following three characters to the list of "reserved" regular exprssion chars: \ " $ . The problem fixes searches for some Chinese terms that are normalized with ICU. Indeed these terms include one of the above REGEX_CHARS. If they are not properly escaped it will reproduce invalid regular expressions. --- diff --git a/index/rpnsearch.c b/index/rpnsearch.c index 073a23a..c433c97 100644 --- a/index/rpnsearch.c +++ b/index/rpnsearch.c @@ -1,4 +1,4 @@ -/* $Id: rpnsearch.c,v 1.29 2007-12-17 12:24:50 adam Exp $ +/* $Id: rpnsearch.c,v 1.30 2008-01-26 15:32:05 adam Exp $ Copyright (C) 1995-2007 Index Data ApS @@ -206,7 +206,7 @@ static void esc_str(char *out_buf, size_t out_size, } } -#define REGEX_CHARS " []()|.*+?!" +#define REGEX_CHARS " []()|.*+?!\\\"$" static void add_non_space(const char *start, const char *end, WRBUF term_dict, @@ -254,7 +254,7 @@ static int term_100_icu(zebra_map_t zm, wrbuf_write(display_term, display_buf, display_len); for (i = 0; i < res_len; i++) { - if (strchr(REGEX_CHARS "\\", res_buf[i])) + if (strchr(REGEX_CHARS, res_buf[i])) wrbuf_putc(term_dict, '\\'); if (res_buf[i] < 32) wrbuf_putc(term_dict, 1);