aboutsummaryrefslogtreecommitdiff
path: root/libgo/go/encoding/gob/decgen.go
diff options
context:
space:
mode:
Diffstat (limited to 'libgo/go/encoding/gob/decgen.go')
-rw-r--r--libgo/go/encoding/gob/decgen.go9
1 files changed, 5 insertions, 4 deletions
diff --git a/libgo/go/encoding/gob/decgen.go b/libgo/go/encoding/gob/decgen.go
index da41a89..ef73f2d 100644
--- a/libgo/go/encoding/gob/decgen.go
+++ b/libgo/go/encoding/gob/decgen.go
@@ -112,11 +112,12 @@ var types = []Type{
errorf("string data too long for buffer: %d", n)
}
// Read the data.
- data := make([]byte, n)
- if _, err := state.b.Read(data); err != nil {
- errorf("error decoding string: %s", err)
+ data := state.b.Bytes()
+ if len(data) < n {
+ errorf("invalid string length %d: exceeds input size %d", n, len(data))
}
- slice[i] = string(data)`,
+ slice[i] = string(data[:n])
+ state.b.Drop(n)`,
},
{
"uint",