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::
|
||||
|
||||
* 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
|
||||
|
||||
Documentation::
|
||||
|
@ -654,6 +654,13 @@ string_match (const char *string, const char *mask, int case_sensitive)
|
||||
free (word);
|
||||
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)
|
||||
{
|
||||
pos_word2 = (case_sensitive) ?
|
||||
@ -662,8 +669,16 @@ string_match (const char *string, const char *mask, int case_sensitive)
|
||||
if (!pos_word2)
|
||||
break;
|
||||
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
|
||||
{
|
||||
|
@ -571,6 +571,18 @@ TEST(CoreString, Match)
|
||||
LONGS_EQUAL(1, string_match ("aabaa", "aa*", 1));
|
||||
LONGS_EQUAL(1, string_match ("aabaabaabaa", "aa*", 0));
|
||||
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