sources/network/bytestream.cpp

changeset 173
248fba6d1e76
parent 158
de7574d292ad
child 174
78ee24fd3321
child 180
2e7225dbd9b2
--- a/sources/network/bytestream.cpp	Sat Jul 23 12:32:23 2016 +0300
+++ b/sources/network/bytestream.cpp	Wed Jan 27 12:38:00 2021 +0200
@@ -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