| 30 | } |
| 31 | |
| 32 | void cache_tree_free(struct cache_tree **it_p) |
| 33 | { |
| 34 | int i; |
| 35 | struct cache_tree *it = *it_p; |
| 36 | |
| 37 | if (!it) |
| 38 | return; |
| 39 | for (i = 0; i < it->subtree_nr; i++) |
| 40 | if (it->down[i]) { |
| 41 | cache_tree_free(&it->down[i]->cache_tree); |
| 42 | free(it->down[i]); |
| 43 | } |
| 44 | free(it->down); |
| 45 | free(it); |
| 46 | *it_p = NULL; |
| 47 | } |
| 48 | |
| 49 | static int subtree_name_cmp(const char *one, int onelen, |
| 50 | const char *two, int twolen) |
no outgoing calls