Browse Source

remove unnecessary memory allocation in uuid generation

v2ray 10 years ago
parent
commit
1958a874cd
2 changed files with 10 additions and 1 deletions
  1. 2 1
      common/uuid/uuid.go
  2. 8 0
      common/uuid/uuid_test.go

+ 2 - 1
common/uuid/uuid.go

@@ -39,8 +39,9 @@ func (this *UUID) Next() *UUID {
 	md5hash := md5.New()
 	md5hash.Write(this.Bytes())
 	md5hash.Write([]byte("16167dc8-16b6-4e6d-b8bb-65dd68113a81"))
+	newid := new(UUID)
 	for {
-		newid, _ := ParseBytes(md5hash.Sum(nil))
+		md5hash.Sum(newid[:0])
 		if !newid.Equals(this) {
 			return newid
 		}

+ 8 - 0
common/uuid/uuid_test.go

@@ -59,3 +59,11 @@ func TestEquals(t *testing.T) {
 	assert.Bool(uuid.Equals(uuid2)).IsTrue()
 	assert.Bool(uuid.Equals(New())).IsFalse()
 }
+
+func TestNext(t *testing.T) {
+	v2testing.Current(t)
+
+	uuid := New()
+	uuid2 := uuid.Next()
+	assert.Bool(uuid.Equals(uuid2)).IsFalse()
+}