aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAyende Rahien <Ayende@ayende.com>2010-02-19 00:30:04 +0200
committerAyende Rahien <Ayende@ayende.com>2010-02-19 00:30:04 +0200
commite3aff478fd18b9bfb677e7a178b855a5950d5551 (patch)
tree168bf36ee3de746eafaeeaa64a1aff0dde6728f3
parentd3f2d098fa39596bf6ea59bb93d485e8aaaf7476 (diff)
downloadprotobuf-e3aff478fd18b9bfb677e7a178b855a5950d5551.tar.gz
protobuf-e3aff478fd18b9bfb677e7a178b855a5950d5551.tar.bz2
protobuf-e3aff478fd18b9bfb677e7a178b855a5950d5551.zip
Making ByteString.bytes internal, to allow faster access to the raw bytes.
Fixing ByteString.GetHashCode to create good hash code.
-rw-r--r--src/ProtocolBuffers/ByteString.cs11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/ProtocolBuffers/ByteString.cs b/src/ProtocolBuffers/ByteString.cs
index 78b946bb..bf02ea6e 100644
--- a/src/ProtocolBuffers/ByteString.cs
+++ b/src/ProtocolBuffers/ByteString.cs
@@ -46,7 +46,7 @@ namespace Google.ProtocolBuffers {
private static readonly ByteString empty = new ByteString(new byte[0]);
- private readonly byte[] bytes;
+ internal readonly byte[] bytes;
/// <summary>
/// Constructs a new ByteString from the given byte array. The array is
@@ -154,10 +154,11 @@ namespace Google.ProtocolBuffers {
}
public override int GetHashCode() {
- int ret = 23;
- foreach (byte b in bytes) {
- ret = (ret << 8) | b;
- }
+ int ret = 23;
+ for (int i = 0; i < bytes.Length; i++)
+ {
+ ret = (ret * 23) ^ bytes[i];
+ }
return ret;
}