| 699 | } |
| 700 | |
| 701 | static REP_SET *make_new_set(REP_SETS *sets) |
| 702 | { |
| 703 | uint i,count,*bit_buffer; |
| 704 | REP_SET *set; |
| 705 | if (sets->extra) |
| 706 | { |
| 707 | sets->extra--; |
| 708 | set=sets->set+ sets->count++; |
| 709 | memset(set->bits, 0, sizeof(uint)*sets->size_of_bits); |
| 710 | memset(&set->next[0], 0, sizeof(set->next[0])*LAST_CHAR_CODE); |
| 711 | set->found_offset=0; |
| 712 | set->found_len=0; |
| 713 | set->table_offset= (uint) ~0; |
| 714 | set->size_of_bits=sets->size_of_bits; |
| 715 | return set; |
| 716 | } |
| 717 | count=sets->count+sets->invisible+SET_MALLOC_HUNC; |
| 718 | if (!(set=(REP_SET*) my_realloc((uchar*) sets->set_buffer, |
| 719 | sizeof(REP_SET)*count, |
| 720 | MYF(MY_WME)))) |
| 721 | return 0; |
| 722 | sets->set_buffer=set; |
| 723 | sets->set=set+sets->invisible; |
| 724 | if (!(bit_buffer=(uint*) my_realloc((uchar*) sets->bit_buffer, |
| 725 | (sizeof(uint)*sets->size_of_bits)*count, |
| 726 | MYF(MY_WME)))) |
| 727 | return 0; |
| 728 | sets->bit_buffer=bit_buffer; |
| 729 | for (i=0 ; i < count ; i++) |
| 730 | { |
| 731 | sets->set_buffer[i].bits=bit_buffer; |
| 732 | bit_buffer+=sets->size_of_bits; |
| 733 | } |
| 734 | sets->extra=SET_MALLOC_HUNC; |
| 735 | return make_new_set(sets); |
| 736 | } |
| 737 | |
| 738 | static void free_last_set(REP_SETS *sets) |
| 739 | { |
no test coverage detected