| 605 | static bitset_t utf8_sb_map; |
| 606 | #endif /* __GNUC__ >= 3 */ |
| 607 | #endif /* RE_ENABLE_I18N */ |
| 608 | |
| 609 | |
| 610 | static void |
| 611 | free_dfa_content (re_dfa_t *dfa) |
| 612 | { |
| 613 | int i, j; |
| 614 | |
| 615 | if (dfa->nodes) |
| 616 | for (i = 0; i < dfa->nodes_len; ++i) |
| 617 | free_token (dfa->nodes + i); |
| 618 | re_free (dfa->nexts); |
| 619 | for (i = 0; i < dfa->nodes_len; ++i) |
| 620 | { |
| 621 | if (dfa->eclosures != NULL) |
| 622 | re_node_set_free (dfa->eclosures + i); |
| 623 | if (dfa->inveclosures != NULL) |
| 624 | re_node_set_free (dfa->inveclosures + i); |
| 625 | if (dfa->edests != NULL) |
| 626 | re_node_set_free (dfa->edests + i); |
| 627 | } |
| 628 | re_free (dfa->edests); |
| 629 | re_free (dfa->eclosures); |
| 630 | re_free (dfa->inveclosures); |
| 631 | re_free (dfa->nodes); |
| 632 | |
| 633 | if (dfa->state_table) |
| 634 | for (i = 0; i <= dfa->state_hash_mask; ++i) |
| 635 | { |
| 636 | struct re_state_table_entry *entry = dfa->state_table + i; |
| 637 | for (j = 0; j < entry->num; ++j) |
| 638 | { |
| 639 | re_dfastate_t *state = entry->array[j]; |
| 640 | free_state (state); |
| 641 | } |
| 642 | re_free (entry->array); |
| 643 | } |
| 644 | re_free (dfa->state_table); |
| 645 | #ifdef RE_ENABLE_I18N |
| 646 | if (dfa->sb_char != utf8_sb_map) |
| 647 | re_free (dfa->sb_char); |
| 648 | #endif |
| 649 | re_free (dfa->subexp_map); |
| 650 | #ifdef DEBUG |
| 651 | re_free (dfa->re_str); |
| 652 | #endif |
| 653 | |
| 654 | re_free (dfa); |
| 655 | } |
no test coverage detected