Fix broken ~ match if filter contains = PAZ-941
authorAdam Dickmeiss <adam@indexdata.dk>
Tue, 24 Jun 2014 12:07:35 +0000 (14:07 +0200)
committerAdam Dickmeiss <adam@indexdata.dk>
Tue, 24 Jun 2014 12:09:42 +0000 (14:09 +0200)
src/database.c

index 4f95780..a23c6fd 100644 (file)
@@ -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;