| 84 | } |
| 85 | |
| 86 | string CodedInputData::readString() { |
| 87 | int32_t size = readRawVarint32(); |
| 88 | if (size < 0) { |
| 89 | throw length_error("InvalidProtocolBuffer negativeSize"); |
| 90 | } |
| 91 | |
| 92 | auto s_size = static_cast<size_t>(size); |
| 93 | if (s_size <= m_size - m_position) { |
| 94 | string result((char *) (m_ptr + m_position), s_size); |
| 95 | m_position += s_size; |
| 96 | return result; |
| 97 | } else { |
| 98 | throw out_of_range("InvalidProtocolBuffer truncatedMessage"); |
| 99 | } |
| 100 | } |
| 101 | |
| 102 | void CodedInputData::readString(string &s) { |
| 103 | int32_t size = readRawVarint32(); |