File tree Expand file tree Collapse file tree 1 file changed +8
-6
lines changed
Expand file tree Collapse file tree 1 file changed +8
-6
lines changed Original file line number Diff line number Diff line change @@ -129,15 +129,13 @@ const bytesPerBucket = bucketSize * fingerprintSizeBits / 8
129129
130130// Encode returns a byte slice representing a Cuckoofilter.
131131func (cf * Filter ) Encode () []byte {
132- res := new (bytes.Buffer )
133- res .Grow (len (cf .buckets ) * bytesPerBucket )
134-
132+ buf := make ([]byte , 0 , len (cf .buckets )* bytesPerBucket )
135133 for _ , b := range cf .buckets {
136134 for _ , fp := range b {
137- binary . Write ( res , binary .LittleEndian , fp )
135+ buf = binary .LittleEndian . AppendUint16 ( buf , uint16 ( fp ) )
138136 }
139137 }
140- return res . Bytes ()
138+ return buf
141139}
142140
143141// Decode returns a Cuckoofilter from a byte slice created using Encode.
@@ -156,9 +154,13 @@ func Decode(data []byte) (*Filter, error) {
156154 buckets := make ([]bucket , numBuckets )
157155 reader := bytes .NewReader (data )
158156
157+ buf := make ([]byte , 2 )
159158 for i , b := range buckets {
160159 for j := range b {
161- binary .Read (reader , binary .LittleEndian , & buckets [i ][j ])
160+ if _ , err := reader .Read (buf ); err != nil {
161+ return nil , err
162+ }
163+ buckets [i ][j ] = fingerprint (binary .LittleEndian .Uint16 (buf ))
162164 if buckets [i ][j ] != nullFp {
163165 count ++
164166 }
You can’t perform that action at this time.
0 commit comments