소스 검색

Merge pull request #92 from Fant/master

Added missing error handling to RandomUUID function
Christoph Hack 12 년 전
부모
커밋
10443be244
3개의 변경된 파일12개의 추가작업 그리고 6개의 파일을 삭제
  1. 2 1
      AUTHORS
  2. 6 3
      uuid.go
  3. 4 2
      uuid_test.go

+ 2 - 1
AUTHORS

@@ -14,4 +14,5 @@ Ben Hood <0x6e6562@gmail.com>
 Pete Hopkins <phopkins@gmail.com>
 Chris Bannister <c.bannister@gmail.com>
 Maxim Bublis <b@codemonkey.ru>
-Alex Zorin <git@zor.io>
+Alex Zorin <git@zor.io>
+Kasper Middelboe Petersen <me@phant.dk>

+ 6 - 3
uuid.go

@@ -96,14 +96,17 @@ func UUIDFromBytes(input []byte) (UUID, error) {
 
 // RandomUUID generates a totally random UUID (version 4) as described in
 // RFC 4122.
-func RandomUUID() UUID {
+func RandomUUID() (UUID, error) {
 	var u UUID
-	io.ReadFull(rand.Reader, u[:])
+	_, err := io.ReadFull(rand.Reader, u[:])
+	if err != nil {
+		return u, err
+	}
 	u[6] &= 0x0F // clear version
 	u[6] |= 0x40 // set version to 4 (random uuid)
 	u[8] &= 0x3F // clear variant
 	u[8] |= 0x80 // set to IETF variant
-	return u
+	return u, nil
 }
 
 var timeBase = time.Date(1582, time.October, 15, 0, 0, 0, 0, time.UTC).Unix()

+ 4 - 2
uuid_test.go

@@ -64,8 +64,10 @@ func TestPredefinedUUID(t *testing.T) {
 
 func TestRandomUUID(t *testing.T) {
 	for i := 0; i < 20; i++ {
-		uuid := RandomUUID()
-
+		uuid, err := RandomUUID()
+		if err != nil {
+			t.Errorf("RandomUUID: %v", err)
+		}
 		if variant := uuid.Variant(); variant != VariantIETF {
 			t.Errorf("wrong variant. expected %d got %d", VariantIETF, variant)
 		}