From 1df86c90a941584991fcb5a4ea3f070a4e1c45d2 Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Sat, 26 Jan 2008 15:32:05 +0000 Subject: [PATCH] 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. --- index/rpnsearch.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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); -- 1.7.10.4