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 <iant@golang.org>
diff --git a/src/hash/crc32/crc32.go b/src/hash/crc32/crc32.go
index 234d929..228cc04 100644
--- a/src/hash/crc32/crc32.go
+++ b/src/hash/crc32/crc32.go
@@ -61,7 +61,8 @@
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 6925867..b420a22 100644
--- a/src/hash/crc64/crc64.go
+++ b/src/hash/crc64/crc64.go
@@ -24,7 +24,8 @@
// 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++ {