@@ -32,10 +32,9 @@ func NewExtJSONValueReaderPool() *ExtJSONValueReaderPool {
32
32
}
33
33
34
34
// Get retrieves a ValueReader from the pool and uses src as the underlying ExtJSON.
35
- func (bvrp * ExtJSONValueReaderPool ) Get (r io.Reader , canonical bool ) ValueReader {
35
+ func (bvrp * ExtJSONValueReaderPool ) Get (r io.Reader , canonical bool ) ( ValueReader , error ) {
36
36
vr := bvrp .pool .Get ().(* extJSONValueReader )
37
- vr = vr .reset (r , canonical )
38
- return vr
37
+ return vr .reset (r , canonical )
39
38
}
40
39
41
40
// Put inserts a ValueReader into the pool. If the ValueReader is not a ExtJSON ValueReader nothing
@@ -46,7 +45,7 @@ func (bvrp *ExtJSONValueReaderPool) Put(vr ValueReader) (ok bool) {
46
45
return false
47
46
}
48
47
49
- bvr = bvr .reset (nil , false )
48
+ bvr , _ = bvr .reset (nil , false )
50
49
bvrp .pool .Put (bvr )
51
50
return true
52
51
}
@@ -68,22 +67,21 @@ type extJSONValueReader struct {
68
67
// NewExtJSONValueReader creates a new ValueReader from a given io.Reader
69
68
// It will interpret the JSON of r as canonical or relaxed according to the
70
69
// given canonical flag
71
- func NewExtJSONValueReader (r io.Reader , canonical bool ) ValueReader {
70
+ func NewExtJSONValueReader (r io.Reader , canonical bool ) ( ValueReader , error ) {
72
71
return newExtJSONValueReader (r , canonical )
73
72
}
74
73
75
- func newExtJSONValueReader (r io.Reader , canonical bool ) * extJSONValueReader {
74
+ func newExtJSONValueReader (r io.Reader , canonical bool ) ( * extJSONValueReader , error ) {
76
75
ejvr := new (extJSONValueReader )
77
76
return ejvr .reset (r , canonical )
78
77
}
79
78
80
- func (ejvr * extJSONValueReader ) reset (r io.Reader , canonical bool ) * extJSONValueReader {
79
+ func (ejvr * extJSONValueReader ) reset (r io.Reader , canonical bool ) ( * extJSONValueReader , error ) {
81
80
p := newExtJSONParser (r , canonical )
82
81
typ , err := p .peekType ()
83
82
84
83
if err != nil {
85
- // TODO: invalid JSON--return error message?
86
- return nil
84
+ return nil , ErrInvalidJSON
87
85
}
88
86
89
87
var m mode
@@ -104,7 +102,7 @@ func (ejvr *extJSONValueReader) reset(r io.Reader, canonical bool) *extJSONValue
104
102
return & extJSONValueReader {
105
103
p : p ,
106
104
stack : stack ,
107
- }
105
+ }, nil
108
106
}
109
107
110
108
func (ejvr * extJSONValueReader ) advanceFrame () {
0 commit comments