From 35249cb0452213d7f1f10067eeffe25eac5d8384 Mon Sep 17 00:00:00 2001 From: Thierry FOURNIER Date: Tue, 14 Jan 2014 13:38:40 +0100 Subject: [PATCH] BUG/MINOR: pattern: pattern comparison executed twice If the pattern is set as case insensitive, the string comparison is executed twice. The first time is insensitive comparison, the second is sensitive. This is a recent bug, no backport is needed. --- src/pattern.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/pattern.c b/src/pattern.c index 8380c636f..38b13835c 100644 --- a/src/pattern.c +++ b/src/pattern.c @@ -1222,11 +1222,14 @@ browse_list: continue; if (pattern.len != pat->len) continue; - if ((pat->flags & PAT_F_IGNORE_CASE) && - strncasecmp(pattern.ptr.str, pat->ptr.str, pat->len) != 0) - continue; - if (strncmp(pattern.ptr.str, pat->ptr.str, pat->len) != 0) - continue; + if (pat->flags & PAT_F_IGNORE_CASE) { + if (strncasecmp(pattern.ptr.str, pat->ptr.str, pat->len) != 0) + continue; + } + else { + if (strncmp(pattern.ptr.str, pat->ptr.str, pat->len) != 0) + continue; + } goto found; } } @@ -1245,11 +1248,14 @@ browse_list: list_for_each_entry(pat, &expr->patterns, list) { if (pat->flags & PAT_F_TREE) continue; - if ((pat->flags & PAT_F_IGNORE_CASE) && - strcasecmp(pattern.ptr.reg->regstr, pat->ptr.reg->regstr) != 0) - continue; - if (strcmp(pattern.ptr.reg->regstr, pat->ptr.reg->regstr) != 0) - continue; + if (pat->flags & PAT_F_IGNORE_CASE) { + if (strcasecmp(pattern.ptr.reg->regstr, pat->ptr.reg->regstr) != 0) + continue; + } + else { + if (strcmp(pattern.ptr.reg->regstr, pat->ptr.reg->regstr) != 0) + continue; + } goto found; } }