Commit e16d8036 authored by Joe Tsai's avatar Joe Tsai Committed by Ian Lance Taylor

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/14258Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
parent c788a8e0
......@@ -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:
......
......@@ -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++ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment