X-Git-Url: https://arthur.barton.de/gitweb/?a=blobdiff_plain;f=src%2Fsimple_pattern.c;h=f72a42d06e6e53c01eb3e5d4cd76637d728bd902;hb=1c5e878d6d711b6f362b1089975d85f63625bfb0;hp=7e4424297f86c2c311f58a57dedaa6221dddf144;hpb=a2d6499de3e0eb69673e30f96e82d3d9419ddd5a;p=netdata.git diff --git a/src/simple_pattern.c b/src/simple_pattern.c index 7e442429..f72a42d0 100644 --- a/src/simple_pattern.c +++ b/src/simple_pattern.c @@ -169,7 +169,7 @@ static inline int match_pattern(struct simple_pattern *m, const char *str, size_ 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) @@ -184,8 +184,8 @@ int simple_pattern_matches(SIMPLE_PATTERN *list, const char *str) { 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); } @@ -193,5 +193,5 @@ static inline void free_pattern(struct simple_pattern *m) { void simple_pattern_free(SIMPLE_PATTERN *list) { if(!list) return; - free_pattern(((struct simple_pattern *)list)->next); + free_pattern(((struct simple_pattern *)list)); }