| 833 | } |
| 834 | |
| 835 | static void free_grep_pat(struct grep_pat *pattern) |
| 836 | { |
| 837 | struct grep_pat *p, *n; |
| 838 | |
| 839 | for (p = pattern; p; p = n) { |
| 840 | n = p->next; |
| 841 | switch (p->token) { |
| 842 | case GREP_PATTERN: /* atom */ |
| 843 | case GREP_PATTERN_HEAD: |
| 844 | case GREP_PATTERN_BODY: |
| 845 | if (p->pcre2_pattern) |
| 846 | free_pcre2_pattern(p); |
| 847 | else |
| 848 | regfree(&p->regexp); |
| 849 | break; |
| 850 | default: |
| 851 | break; |
| 852 | } |
| 853 | free(p->pattern); |
| 854 | free(p); |
| 855 | } |
| 856 | } |
| 857 | |
| 858 | void free_grep_patterns(struct grep_opt *opt) |
| 859 | { |
no test coverage detected