core: fix function string_match with joker in the string if multiple words matched in input string
Before fix: string_match("script.color.text_description", "*script*color*", 0) => 0 After fix: string_match("script.color.text_description", "*script*color*", 0) => 1
This commit is contained in:
parent
3d3cdf3884
commit
60b9e36ae2
@ -30,6 +30,7 @@ New features::
|
|||||||
|
|
||||||
Bug fixes::
|
Bug fixes::
|
||||||
|
|
||||||
|
* api: fix function string_match with joker in the string if multiple words matched in input string
|
||||||
* irc: set notify level to "private" for received WALLOPS
|
* irc: set notify level to "private" for received WALLOPS
|
||||||
|
|
||||||
Documentation::
|
Documentation::
|
||||||
|
@ -654,6 +654,13 @@ string_match (const char *string, const char *mask, int case_sensitive)
|
|||||||
free (word);
|
free (word);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
if ((!pos_word[length_word] && !pos_end[0])
|
||||||
|
|| string_match (pos_word + length_word, pos_end,
|
||||||
|
case_sensitive))
|
||||||
|
{
|
||||||
|
free (word);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
pos_word2 = (case_sensitive) ?
|
pos_word2 = (case_sensitive) ?
|
||||||
@ -662,8 +669,16 @@ string_match (const char *string, const char *mask, int case_sensitive)
|
|||||||
if (!pos_word2)
|
if (!pos_word2)
|
||||||
break;
|
break;
|
||||||
pos_word = pos_word2;
|
pos_word = pos_word2;
|
||||||
|
if ((!pos_word[length_word] && !pos_end[0])
|
||||||
|
|| string_match (pos_word + length_word, pos_end,
|
||||||
|
case_sensitive))
|
||||||
|
{
|
||||||
|
free (word);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
ptr_string = pos_word + length_word;
|
free (word);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -571,6 +571,18 @@ TEST(CoreString, Match)
|
|||||||
LONGS_EQUAL(1, string_match ("aabaa", "aa*", 1));
|
LONGS_EQUAL(1, string_match ("aabaa", "aa*", 1));
|
||||||
LONGS_EQUAL(1, string_match ("aabaabaabaa", "aa*", 0));
|
LONGS_EQUAL(1, string_match ("aabaabaabaa", "aa*", 0));
|
||||||
LONGS_EQUAL(1, string_match ("aabaabaabaa", "aa*", 1));
|
LONGS_EQUAL(1, string_match ("aabaabaabaa", "aa*", 1));
|
||||||
|
LONGS_EQUAL(1, string_match ("script.color.description", "*script.color*", 0));
|
||||||
|
LONGS_EQUAL(1, string_match ("script.color.description", "*script.color*", 1));
|
||||||
|
LONGS_EQUAL(1, string_match ("script.color.description", "*script.COLOR*", 0));
|
||||||
|
LONGS_EQUAL(0, string_match ("script.color.description", "*script.COLOR*", 1));
|
||||||
|
LONGS_EQUAL(1, string_match ("script.color.description", "*script*color*", 0));
|
||||||
|
LONGS_EQUAL(1, string_match ("script.color.description", "*script*color*", 1));
|
||||||
|
LONGS_EQUAL(1, string_match ("script.color.description", "*script*COLOR*", 0));
|
||||||
|
LONGS_EQUAL(0, string_match ("script.color.description", "*script*COLOR*", 1));
|
||||||
|
LONGS_EQUAL(1, string_match ("script.script.script", "scr*scr*scr*", 0));
|
||||||
|
LONGS_EQUAL(1, string_match ("script.script.script", "SCR*SCR*SCR*", 0));
|
||||||
|
LONGS_EQUAL(0, string_match ("script.script.script", "SCR*SCR*SCR*", 1));
|
||||||
|
LONGS_EQUAL(0, string_match ("script.script.script", "scr*scr*scr*scr*", 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user