(CharArr arr, int middle)
| 730 | // character ('"' or "/"). start<=middle<end |
| 731 | // this should be faster for strings with fewer escapes, but probably slower for many escapes. |
| 732 | private void readStringChars2(CharArr arr, int middle) throws IOException { |
| 733 | if (stringTerm == 0) { |
| 734 | readStringBare(arr); |
| 735 | return; |
| 736 | } |
| 737 | |
| 738 | char terminator = (char) stringTerm; |
| 739 | |
| 740 | for (; ; ) { |
| 741 | if (middle >= end) { |
| 742 | arr.write(buf, start, middle - start); |
| 743 | start = middle; |
| 744 | getMore(); |
| 745 | middle = start; |
| 746 | } |
| 747 | int ch = buf[middle++]; |
| 748 | if (ch == terminator) { |
| 749 | int len = middle - start - 1; |
| 750 | if (len > 0) arr.write(buf, start, len); |
| 751 | start = middle; |
| 752 | return; |
| 753 | } else if (ch == '\\') { |
| 754 | int len = middle - start - 1; |
| 755 | if (len > 0) arr.write(buf, start, len); |
| 756 | start = middle; |
| 757 | arr.write(readEscapedChar()); |
| 758 | middle = start; |
| 759 | } |
| 760 | } |
| 761 | } |
| 762 | |
| 763 | private void readStringBare(CharArr arr) throws IOException { |
| 764 | if (arr != out) { |
no test coverage detected