From: Joe Tsai Date: Thu, 3 Sep 2015 22:24:53 +0000 (-0700) Subject: hash: update documentation for MakeTable in crc32 and crc64 X-Git-Tag: go1.6beta1~1188 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=e16d80362d9a6270e5c28160828a241f775c18e1;p=gostls13.git hash: update documentation for MakeTable in crc32 and crc64 Explicitly say that *Table returned by MakeTable may not be modified. Otherwise, this leads to very subtle bugs that may or may not manifest themselves. Same comment was made on package crc64, to keep the future open to the caching tables that crc32 effectively does. Fixes: #12487. Change-Id: I2881bebb8b16f6f8564412172774c79c2593c6c1 Reviewed-on: https://go-review.googlesource.com/14258 Reviewed-by: Ian Lance Taylor --- diff --git a/src/hash/crc32/crc32.go b/src/hash/crc32/crc32.go index 234d929689..228cc0461c 100644 --- a/src/hash/crc32/crc32.go +++ b/src/hash/crc32/crc32.go @@ -61,7 +61,8 @@ type slicing8Table [8]Table var iEEETable8 *slicing8Table var iEEETable8Once sync.Once -// MakeTable returns the Table constructed from the specified polynomial. +// MakeTable returns a Table constructed from the specified polynomial. +// The contents of this Table must not be modified. func MakeTable(poly uint32) *Table { switch poly { case IEEE: diff --git a/src/hash/crc64/crc64.go b/src/hash/crc64/crc64.go index 6925867988..b420a22562 100644 --- a/src/hash/crc64/crc64.go +++ b/src/hash/crc64/crc64.go @@ -24,7 +24,8 @@ const ( // Table is a 256-word table representing the polynomial for efficient processing. type Table [256]uint64 -// MakeTable returns the Table constructed from the specified polynomial. +// MakeTable returns a Table constructed from the specified polynomial. +// The contents of this Table must not be modified. func MakeTable(poly uint64) *Table { t := new(Table) for i := 0; i < 256; i++ {