aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ProtocolBuffers/CodedInputStream.cs11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/ProtocolBuffers/CodedInputStream.cs b/src/ProtocolBuffers/CodedInputStream.cs
index b7fe9c33..78d92519 100644
--- a/src/ProtocolBuffers/CodedInputStream.cs
+++ b/src/ProtocolBuffers/CodedInputStream.cs
@@ -219,16 +219,19 @@ namespace Google.ProtocolBuffers {
/// </summary>
public String ReadString() {
int size = (int) ReadRawVarint32();
- if (size < bufferSize - bufferPos && size > 0) {
+ // No need to read any data for an empty string.
+ if (size == 0) {
+ return "";
+ }
+ if (size <= bufferSize - bufferPos) {
// Fast path: We already have the bytes in a contiguous buffer, so
// just copy directly from it.
String result = Encoding.UTF8.GetString(buffer, bufferPos, size);
bufferPos += size;
return result;
- } else {
- // Slow path: Build a byte array first then copy it.
- return Encoding.UTF8.GetString(ReadRawBytes(size));
}
+ // Slow path: Build a byte array first then copy it.
+ return Encoding.UTF8.GetString(ReadRawBytes(size));
}
/// <summary>