From 88488da99efffeaeba030dead23a2c86a9f59220 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Bossuat Date: Mon, 1 May 2023 21:10:26 +0200 Subject: [PATCH] [structs]: fixed EOF for readfrom if struct was empty --- drlwe/keygen_gal.go | 2 +- rlwe/evaluationkeyset.go | 2 +- utils/structs/matrix.go | 7 ++++--- utils/structs/vector.go | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/drlwe/keygen_gal.go b/drlwe/keygen_gal.go index d386e015..e226bdb3 100644 --- a/drlwe/keygen_gal.go +++ b/drlwe/keygen_gal.go @@ -286,7 +286,7 @@ func (share *GKGShare) WriteTo(w io.Writer) (n int64, err error) { n += inc2 - return + return n, err default: return share.WriteTo(bufio.NewWriter(w)) diff --git a/rlwe/evaluationkeyset.go b/rlwe/evaluationkeyset.go index e609aadb..1a358bcb 100644 --- a/rlwe/evaluationkeyset.go +++ b/rlwe/evaluationkeyset.go @@ -149,7 +149,7 @@ func (evk *EvaluationKeySet) WriteTo(w io.Writer) (int64, error) { n += int64(inc) } - return n, nil + return n, w.Flush() default: return evk.WriteTo(bufio.NewWriter(w)) diff --git a/utils/structs/matrix.go b/utils/structs/matrix.go index 192209fc..fc15e56b 100644 --- a/utils/structs/matrix.go +++ b/utils/structs/matrix.go @@ -90,7 +90,7 @@ func (m Matrix[T]) WriteTo(w io.Writer) (int64, error) { } } - return n, nil + return n, w.Flush() default: return m.WriteTo(bufio.NewWriter(w)) @@ -112,7 +112,7 @@ func (m *Matrix[T]) ReadFrom(r io.Reader) (int64, error) { var size, n int if n, err = buffer.ReadInt(r, &size); err != nil { - return int64(n), fmt.Errorf("cannot ReadFrom: size: %w", err) + return int64(n), fmt.Errorf("cannot buffer.ReadInt: size: %w", err) } if len(*m) != size { @@ -127,7 +127,7 @@ func (m *Matrix[T]) ReadFrom(r io.Reader) (int64, error) { var inc int if inc, err = buffer.ReadInt(r, &size); err != nil { - return int64(n), fmt.Errorf("cannot ReadFrom: size: %w", err) + return int64(n), fmt.Errorf("cannot buffer.ReadInt: size: %w", err) } n += inc @@ -144,6 +144,7 @@ func (m *Matrix[T]) ReadFrom(r io.Reader) (int64, error) { var inc int64 if inc, err = codec.ReadFromWrapper(r, mi[i][j]); err != nil { + return int64(n) + inc, err } diff --git a/utils/structs/vector.go b/utils/structs/vector.go index c09579a0..2ee92337 100644 --- a/utils/structs/vector.go +++ b/utils/structs/vector.go @@ -78,7 +78,7 @@ func (v *Vector[T]) WriteTo(w io.Writer) (int64, error) { n += inc } - return n, nil + return n, w.Flush() default: return v.WriteTo(bufio.NewWriter(w))