754 if (en.isMemory()) { 755 node = en.target; 756 // !goto retry;! 757 continue retry; 758 } 759 } 760 761 break; 762 } // while 763 } 764 765 private void updateStringNodeCaseFoldMultiByte(StringNode sn) { 766 char[] chars = sn.chars; 767 int end = sn.end; 768 value = sn.p; 769 int sp = 0; 770 char buf; 771 772 while (value < end) { 773 int ovalue = value; 774 buf = Character.toLowerCase(chars[value++]); 775 776 if (chars[ovalue] != buf) { 777 778 char[] sbuf = new char[sn.length() << 1]; 779 System.arraycopy(chars, sn.p, sbuf, 0, ovalue - sn.p); 780 value = ovalue; 781 while (value < end) { 782 buf = Character.toLowerCase(chars[value++]); 783 if (sp >= sbuf.length) { 784 char[]tmp = new char[sbuf.length << 1]; 785 System.arraycopy(sbuf, 0, tmp, 0, sbuf.length); 786 sbuf = tmp; 787 } 788 sbuf[sp++] = buf; 789 } 790 sn.set(sbuf, 0, sp); 791 return; 792 } 793 sp++; 794 } 795 } 796 797 private void updateStringNodeCaseFold(Node node) { 798 StringNode sn = (StringNode)node; 799 updateStringNodeCaseFoldMultiByte(sn); 800 } 801 802 private Node expandCaseFoldMakeRemString(char[] chars, int p, int end) { | 754 if (en.isMemory()) { 755 node = en.target; 756 // !goto retry;! 757 continue retry; 758 } 759 } 760 761 break; 762 } // while 763 } 764 765 private void updateStringNodeCaseFoldMultiByte(StringNode sn) { 766 char[] chars = sn.chars; 767 int end = sn.end; 768 value = sn.p; 769 int sp = 0; 770 char buf; 771 772 while (value < end) { 773 int ovalue = value; 774 buf = EncodingHelper.toLowerCase(chars[value++]); 775 776 if (chars[ovalue] != buf) { 777 778 char[] sbuf = new char[sn.length() << 1]; 779 System.arraycopy(chars, sn.p, sbuf, 0, ovalue - sn.p); 780 value = ovalue; 781 while (value < end) { 782 buf = EncodingHelper.toLowerCase(chars[value++]); 783 if (sp >= sbuf.length) { 784 char[]tmp = new char[sbuf.length << 1]; 785 System.arraycopy(sbuf, 0, tmp, 0, sbuf.length); 786 sbuf = tmp; 787 } 788 sbuf[sp++] = buf; 789 } 790 sn.set(sbuf, 0, sp); 791 return; 792 } 793 sp++; 794 } 795 } 796 797 private void updateStringNodeCaseFold(Node node) { 798 StringNode sn = (StringNode)node; 799 updateStringNodeCaseFoldMultiByte(sn); 800 } 801 802 private Node expandCaseFoldMakeRemString(char[] chars, int p, int end) { |