Properly escape \ in non-regexp searches
authorAdam Dickmeiss <adam@indexdata.dk>
Tue, 11 Dec 2012 14:17:42 +0000 (15:17 +0100)
committerAdam Dickmeiss <adam@indexdata.dk>
Tue, 11 Dec 2012 14:17:42 +0000 (15:17 +0100)
index/rpnsearch.c
test/charmap/charmap1.c

index ff57c68..7733a5d 100644 (file)
@@ -204,7 +204,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,
index f9a6ba8..82f242f 100644 (file)
@@ -77,7 +77,13 @@ static void tst(int argc, char **argv)
     YAZ_CHECK(tl_query(zh, "@attr 1=4 @attr 4=3 @attr 1=4 [", 1));
 
     /* search \ in title:0 .  */
-    YAZ_CHECK(tl_query(zh, "@attr 1=4 @attr 4=3 @attr 1=4 \\\\\\\\", 1));
+    YAZ_CHECK(tl_query(zh, "@attr 1=4 @attr 4=3 @attr 1=4 \\\\", 1));
+
+    /* search \ in title:0 .  Process # in term */
+    YAZ_CHECK(tl_query(zh, "@attr 1=4 @attr 4=3 @attr 1=4 @attr 5=101 \\\\", 1));
+
+    /* search \ in title:0 .  RegExpr-1 */
+    YAZ_CHECK(tl_query(zh, "@attr 1=4 @attr 4=3 @attr 1=4 @attr 5=102 \\\\\\\\", 1));
 
     /* search { in title:0 .  */
     YAZ_CHECK(tl_query(zh, "@attr 1=4 @attr 4=3 @attr 1=4 \\{", 1));