| 815 | } |
| 816 | |
| 817 | static void free_pattern_expr(struct grep_expr *x) |
| 818 | { |
| 819 | switch (x->node) { |
| 820 | case GREP_NODE_TRUE: |
| 821 | case GREP_NODE_ATOM: |
| 822 | break; |
| 823 | case GREP_NODE_NOT: |
| 824 | free_pattern_expr(x->u.unary); |
| 825 | break; |
| 826 | case GREP_NODE_AND: |
| 827 | case GREP_NODE_OR: |
| 828 | free_pattern_expr(x->u.binary.left); |
| 829 | free_pattern_expr(x->u.binary.right); |
| 830 | break; |
| 831 | } |
| 832 | free(x); |
| 833 | } |
| 834 | |
| 835 | static void free_grep_pat(struct grep_pat *pattern) |
| 836 | { |
no outgoing calls
no test coverage detected