break;
case SIMPLE_PATTERN_SUFFIX:
- if(unlikely(strsame(&str[len - m->len], m->match) == 0)) {
+ if(unlikely(strcmp(&str[len - m->len], m->match) == 0)) {
if(!m->child) return 1;
return 0;
}
case SIMPLE_PATTERN_EXACT:
default:
- if(unlikely(strsame(str, m->match) == 0)) {
+ if(unlikely(strcmp(str, m->match) == 0)) {
if(!m->child) return 1;
return 0;
}
int simple_pattern_matches(SIMPLE_PATTERN *list, const char *str) {
struct simple_pattern *m, *root = (struct simple_pattern *)list;
- if(unlikely(!root)) return 0;
+ if(unlikely(!root || !str || !*str)) return 0;
size_t len = strlen(str);
for(m = root; m ; m = m->next)
static inline void free_pattern(struct simple_pattern *m) {
if(!m) return;
- if(m->next) free_pattern(m->next);
- if(m->child) free_pattern(m->child);
+ free_pattern(m->child);
+ free_pattern(m->next);
freez((void *)m->match);
freez(m);
}
void simple_pattern_free(SIMPLE_PATTERN *list) {
if(!list) return;
- free_pattern(((struct simple_pattern *)list)->next);
+ free_pattern(((struct simple_pattern *)list));
}