From 85f0bc6a7b05365b09f8f3ed113123729d6e05ab Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Tue, 24 Jun 2014 14:07:35 +0200 Subject: [PATCH] Fix broken ~ match if filter contains = PAZ-941 --- src/database.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/database.c b/src/database.c index 4f95780..a23c6fd 100644 --- a/src/database.c +++ b/src/database.c @@ -201,11 +201,18 @@ static struct database_criterion *create_database_criterion(NMEM m, int subi; struct database_criterion *new = nmem_malloc(m, sizeof(*new)); char *eq; - if ((eq = strchr(values[i], '='))) - new->type = PAZPAR2_STRING_MATCH; - else if ((eq = strchr(values[i], '~'))) - new->type = PAZPAR2_SUBSTRING_MATCH; - else + for (eq = values[i]; *eq; eq++) + if (*eq == '=') + { + new->type = PAZPAR2_STRING_MATCH; + break; + } + else if (*eq == '~') + { + new->type = PAZPAR2_SUBSTRING_MATCH; + break; + } + if (!*eq) { yaz_log(YLOG_WARN, "Missing equal-sign/tilde in filter"); return 0; -- 1.7.10.4