Browse Source

[Fix] Fix one character length substrings search

tags/1.5.5
Vsevolod Stakhov 7 years ago
parent
commit
c1cce96217
1 changed files with 25 additions and 0 deletions
  1. 25
    0
      src/libutil/str_util.c

+ 25
- 0
src/libutil/str_util.c View File

@@ -1288,6 +1288,18 @@ rspamd_substring_search (const gchar *in, gsize inlen,
const gchar *srch, gsize srchlen)
{
if (inlen > srchlen) {
if (G_UNLIKELY (srchlen == 1)) {
const gchar *p;

p = memchr (in, srch[0], inlen);

if (p) {
return p - in;
}

return (-1);
}

return rspamd_substring_search_common (in, inlen, srch, srchlen,
rspamd_substring_cmp_func);
}
@@ -1306,6 +1318,19 @@ rspamd_substring_search_caseless (const gchar *in, gsize inlen,
const gchar *srch, gsize srchlen)
{
if (inlen > srchlen) {
if (G_UNLIKELY (srchlen == 1)) {
goffset i;
gchar s = lc_map[(guchar)srch[0]];

for (i = 0; i < inlen; i++) {
if (lc_map[(guchar)in[i]] == s) {
return i;
}
}

return (-1);
}

return rspamd_substring_search_common (in, inlen, srch, srchlen,
rspamd_substring_casecmp_func);
}

Loading…
Cancel
Save