sources/network/bytestream.cpp

branch
protocol5
changeset 167
0150f86e68f0
parent 158
de7574d292ad
child 174
78ee24fd3321
child 180
2e7225dbd9b2
--- a/sources/network/bytestream.cpp	Sat Jul 23 12:28:07 2016 +0300
+++ b/sources/network/bytestream.cpp	Sat Jul 23 12:28:52 2016 +0300
@@ -129,28 +129,15 @@
  */
 String Bytestream::readString()
 {
-	ByteArray::Iterator stringEndIterator;
+	String result;
 
-	// Where's the end of the string?
-	for (stringEndIterator = getCurrentIterator(); *stringEndIterator != '\0'; ++stringEndIterator)
+	for (char byte; (byte = readByte()) != '\0';)
 	{
-		if (stringEndIterator == m_data.end())
-		{
-			// Past the end of the buffer
-			throw IOError("unterminated or too long string in packet");
-		}
+		if (result.length() < MAX_NETWORK_STRING)
+			result += byte;
 	}
 
-	// Skip past the null terminator.
-	if (*stringEndIterator == '\0')
-		stringEndIterator += 1;
-
-	// Build and return the string, and advance the position.
-	int stringStart = m_position;
-	unsigned int length = stringEndIterator - getCurrentIterator();
-	length = min<int>(length, MAX_NETWORK_STRING);
-	m_position += length;
-	return String::fromBytes(m_data.splice(stringStart, stringStart + length));
+	return result;
 }
 
 /*!

mercurial