vendor: Update json-iterator (#6030)
Also add explicit support for NaN/Inf Signed-off-by: Goutham Veeramachaneni <gouthamve@gmail.com>
This commit is contained in:
		
							parent
							
								
									76769d4b61
								
							
						
					
					
						commit
						4c648eddf4
					
				
							
								
								
									
										5
									
								
								go.mod
								
								
								
								
							
							
						
						
									
										5
									
								
								go.mod
								
								
								
								
							|  | @ -58,6 +58,7 @@ require ( | |||
| 	github.com/shurcooL/vfsgen v0.0.0-20181202132449-6a9ea43bcacd | ||||
| 	github.com/soheilhy/cmux v0.1.4 | ||||
| 	github.com/spaolacci/murmur3 v1.1.0 // indirect | ||||
| 	github.com/stretchr/testify v1.4.0 // indirect | ||||
| 	go.mongodb.org/mongo-driver v1.0.4 // indirect | ||||
| 	golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4 // indirect | ||||
| 	golang.org/x/net v0.0.0-20190724013045-ca1201d0de80 | ||||
|  | @ -70,6 +71,7 @@ require ( | |||
| 	google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64 | ||||
| 	google.golang.org/grpc v1.22.1 | ||||
| 	gopkg.in/alecthomas/kingpin.v2 v2.2.6 | ||||
| 	gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect | ||||
| 	gopkg.in/fsnotify/fsnotify.v1 v1.4.7 | ||||
| 	gopkg.in/inf.v0 v0.9.1 // indirect | ||||
| 	gopkg.in/yaml.v2 v2.2.2 | ||||
|  | @ -82,6 +84,3 @@ require ( | |||
| ) | ||||
| 
 | ||||
| replace github.com/golang/lint => golang.org/x/lint v0.0.0-20190409202823-959b441ac422 | ||||
| 
 | ||||
| // v1.1.7 introduced a bug around marshaling Point values. Check again later if tests pass with a newer version. | ||||
| replace github.com/json-iterator/go => github.com/json-iterator/go v1.1.6 | ||||
|  |  | |||
							
								
								
									
										10
									
								
								go.sum
								
								
								
								
							
							
						
						
									
										10
									
								
								go.sum
								
								
								
								
							|  | @ -274,8 +274,12 @@ github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5i | |||
| github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= | ||||
| github.com/jpillora/backoff v0.0.0-20180909062703-3050d21c67d7 h1:K//n/AqR5HjG3qxbrBCL4vJPW0MVFSs9CPK1OOJdRME= | ||||
| github.com/jpillora/backoff v0.0.0-20180909062703-3050d21c67d7/go.mod h1:2iMrUgbbvHEiQClaW2NsSzMyGHqN+rDFqY705q49KG0= | ||||
| github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= | ||||
| github.com/json-iterator/go v0.0.0-20180701071628-ab8a2e0c74be/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= | ||||
| github.com/json-iterator/go v1.1.6 h1:MrUvLMLTMxbqFJ9kzlvat/rYZqZnW3u4wkLzWTaFwKs= | ||||
| github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= | ||||
| github.com/json-iterator/go v1.1.7 h1:KfgG9LzI+pYjr4xvmz/5H4FXjokeP+rlHLhv3iH62Fo= | ||||
| github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= | ||||
| github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= | ||||
| github.com/julienschmidt/httprouter v1.2.0 h1:TDTW5Yz1mjftljbcKqRcrYhd4XeOoI98t+9HbQbYf7g= | ||||
| github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= | ||||
|  | @ -318,9 +322,11 @@ github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0Qu | |||
| github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= | ||||
| github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= | ||||
| github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= | ||||
| github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= | ||||
| github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= | ||||
| github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= | ||||
| github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= | ||||
| github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= | ||||
| github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= | ||||
| github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= | ||||
| github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= | ||||
|  | @ -417,6 +423,8 @@ github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRci | |||
| github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= | ||||
| github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= | ||||
| github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= | ||||
| github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= | ||||
| github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= | ||||
| github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4= | ||||
| github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= | ||||
| github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= | ||||
|  | @ -566,6 +574,8 @@ gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLks | |||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= | ||||
| gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= | ||||
| gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= | ||||
| gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= | ||||
| gopkg.in/fsnotify/fsnotify.v1 v1.4.7 h1:XNNYLJHt73EyYiCZi6+xjupS9CpvmiDgjPTAjrBlQbo= | ||||
|  |  | |||
|  | @ -16,7 +16,7 @@ func Unmarshal(data []byte, v interface{}) error { | |||
| 	return ConfigDefault.Unmarshal(data, v) | ||||
| } | ||||
| 
 | ||||
| // UnmarshalFromString convenient method to read from string instead of []byte
 | ||||
| // UnmarshalFromString is a convenient method to read from string instead of []byte
 | ||||
| func UnmarshalFromString(str string, v interface{}) error { | ||||
| 	return ConfigDefault.UnmarshalFromString(str, v) | ||||
| } | ||||
|  |  | |||
|  | @ -0,0 +1,11 @@ | |||
| module github.com/json-iterator/go | ||||
| 
 | ||||
| go 1.12 | ||||
| 
 | ||||
| require ( | ||||
| 	github.com/davecgh/go-spew v1.1.1 | ||||
| 	github.com/google/gofuzz v1.0.0 | ||||
| 	github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 | ||||
| 	github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742 | ||||
| 	github.com/stretchr/testify v1.3.0 | ||||
| ) | ||||
|  | @ -0,0 +1,14 @@ | |||
| github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||
| github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= | ||||
| github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||
| github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw= | ||||
| github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc= | ||||
| github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= | ||||
| github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742 h1:Esafd1046DLDQ0W1YjYsBW+p8U2u7vzgW2SQVmlNazg= | ||||
| github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= | ||||
| github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||
| github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | ||||
| github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= | ||||
| github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= | ||||
|  | @ -37,17 +37,24 @@ func (iter *Iterator) SkipAndReturnBytes() []byte { | |||
| 	return iter.stopCapture() | ||||
| } | ||||
| 
 | ||||
| type captureBuffer struct { | ||||
| 	startedAt int | ||||
| 	captured  []byte | ||||
| // SkipAndAppendBytes skips next JSON element and appends its content to
 | ||||
| // buffer, returning the result.
 | ||||
| func (iter *Iterator) SkipAndAppendBytes(buf []byte) []byte { | ||||
| 	iter.startCaptureTo(buf, iter.head) | ||||
| 	iter.Skip() | ||||
| 	return iter.stopCapture() | ||||
| } | ||||
| 
 | ||||
| func (iter *Iterator) startCapture(captureStartedAt int) { | ||||
| func (iter *Iterator) startCaptureTo(buf []byte, captureStartedAt int) { | ||||
| 	if iter.captured != nil { | ||||
| 		panic("already in capture mode") | ||||
| 	} | ||||
| 	iter.captureStartedAt = captureStartedAt | ||||
| 	iter.captured = make([]byte, 0, 32) | ||||
| 	iter.captured = buf | ||||
| } | ||||
| 
 | ||||
| func (iter *Iterator) startCapture(captureStartedAt int) { | ||||
| 	iter.startCaptureTo(make([]byte, 0, 32), captureStartedAt) | ||||
| } | ||||
| 
 | ||||
| func (iter *Iterator) stopCapture() []byte { | ||||
|  | @ -58,13 +65,7 @@ func (iter *Iterator) stopCapture() []byte { | |||
| 	remaining := iter.buf[iter.captureStartedAt:iter.head] | ||||
| 	iter.captureStartedAt = -1 | ||||
| 	iter.captured = nil | ||||
| 	if len(captured) == 0 { | ||||
| 		copied := make([]byte, len(remaining)) | ||||
| 		copy(copied, remaining) | ||||
| 		return copied | ||||
| 	} | ||||
| 	captured = append(captured, remaining...) | ||||
| 	return captured | ||||
| 	return append(captured, remaining...) | ||||
| } | ||||
| 
 | ||||
| // Skip skips a json object and positions to relatively the next json object
 | ||||
|  |  | |||
|  | @ -432,17 +432,19 @@ func (codec *base64Codec) Decode(ptr unsafe.Pointer, iter *Iterator) { | |||
| } | ||||
| 
 | ||||
| func (codec *base64Codec) Encode(ptr unsafe.Pointer, stream *Stream) { | ||||
| 	src := *((*[]byte)(ptr)) | ||||
| 	if len(src) == 0 { | ||||
| 	if codec.sliceType.UnsafeIsNil(ptr) { | ||||
| 		stream.WriteNil() | ||||
| 		return | ||||
| 	} | ||||
| 	src := *((*[]byte)(ptr)) | ||||
| 	encoding := base64.StdEncoding | ||||
| 	stream.writeByte('"') | ||||
| 	if len(src) != 0 { | ||||
| 		size := encoding.EncodedLen(len(src)) | ||||
| 		buf := make([]byte, size) | ||||
| 		encoding.Encode(buf, src) | ||||
| 		stream.buf = append(stream.buf, buf...) | ||||
| 	} | ||||
| 	stream.writeByte('"') | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -530,8 +530,8 @@ func (decoder *generalStructDecoder) decodeOneField(ptr unsafe.Pointer, iter *It | |||
| 		} | ||||
| 	} | ||||
| 	if fieldDecoder == nil { | ||||
| 		msg := "found unknown field: " + field | ||||
| 		if decoder.disallowUnknownFields { | ||||
| 			msg := "found unknown field: " + field | ||||
| 			iter.ReportError("ReadObject", msg) | ||||
| 		} | ||||
| 		c := iter.nextToken() | ||||
|  |  | |||
|  | @ -1,6 +1,7 @@ | |||
| package jsoniter | ||||
| 
 | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"math" | ||||
| 	"strconv" | ||||
| ) | ||||
|  | @ -13,6 +14,10 @@ func init() { | |||
| 
 | ||||
| // WriteFloat32 write float32 to stream
 | ||||
| func (stream *Stream) WriteFloat32(val float32) { | ||||
| 	if math.IsInf(float64(val), 0) || math.IsNaN(float64(val)) { | ||||
| 		stream.Error = fmt.Errorf("unsupported value: %f", val) | ||||
| 		return | ||||
| 	} | ||||
| 	abs := math.Abs(float64(val)) | ||||
| 	fmt := byte('f') | ||||
| 	// Note: Must use float32 comparisons for underlying float32 value to get precise cutoffs right.
 | ||||
|  | @ -26,6 +31,10 @@ func (stream *Stream) WriteFloat32(val float32) { | |||
| 
 | ||||
| // WriteFloat32Lossy write float32 to stream with ONLY 6 digits precision although much much faster
 | ||||
| func (stream *Stream) WriteFloat32Lossy(val float32) { | ||||
| 	if math.IsInf(float64(val), 0) || math.IsNaN(float64(val)) { | ||||
| 		stream.Error = fmt.Errorf("unsupported value: %f", val) | ||||
| 		return | ||||
| 	} | ||||
| 	if val < 0 { | ||||
| 		stream.writeByte('-') | ||||
| 		val = -val | ||||
|  | @ -54,6 +63,10 @@ func (stream *Stream) WriteFloat32Lossy(val float32) { | |||
| 
 | ||||
| // WriteFloat64 write float64 to stream
 | ||||
| func (stream *Stream) WriteFloat64(val float64) { | ||||
| 	if math.IsInf(val, 0) || math.IsNaN(val) { | ||||
| 		stream.Error = fmt.Errorf("unsupported value: %f", val) | ||||
| 		return | ||||
| 	} | ||||
| 	abs := math.Abs(val) | ||||
| 	fmt := byte('f') | ||||
| 	// Note: Must use float32 comparisons for underlying float32 value to get precise cutoffs right.
 | ||||
|  | @ -67,6 +80,10 @@ func (stream *Stream) WriteFloat64(val float64) { | |||
| 
 | ||||
| // WriteFloat64Lossy write float64 to stream with ONLY 6 digits precision although much much faster
 | ||||
| func (stream *Stream) WriteFloat64Lossy(val float64) { | ||||
| 	if math.IsInf(val, 0) || math.IsNaN(val) { | ||||
| 		stream.Error = fmt.Errorf("unsupported value: %f", val) | ||||
| 		return | ||||
| 	} | ||||
| 	if val < 0 { | ||||
| 		stream.writeByte('-') | ||||
| 		val = -val | ||||
|  |  | |||
|  | @ -224,7 +224,7 @@ github.com/influxdata/influxdb/pkg/escape | |||
| github.com/jmespath/go-jmespath | ||||
| # github.com/jpillora/backoff v0.0.0-20180909062703-3050d21c67d7 | ||||
| github.com/jpillora/backoff | ||||
| # github.com/json-iterator/go v1.1.7 => github.com/json-iterator/go v1.1.6 | ||||
| # github.com/json-iterator/go v1.1.7 | ||||
| github.com/json-iterator/go | ||||
| # github.com/julienschmidt/httprouter v1.2.0 | ||||
| github.com/julienschmidt/httprouter | ||||
|  |  | |||
|  | @ -1266,10 +1266,23 @@ func marshalPointJSON(ptr unsafe.Pointer, stream *jsoniter.Stream) { | |||
| 	} | ||||
| 	stream.WriteMore() | ||||
| 	stream.WriteRaw(`"`) | ||||
| 	stream.WriteFloat64(p.V) | ||||
| 
 | ||||
| 	// Taken from https://github.com/json-iterator/go/blob/master/stream_float.go#L71 as a workaround
 | ||||
| 	// to https://github.com/json-iterator/go/issues/365 (jsoniter, to follow json standard, doesn't allow inf/nan).
 | ||||
| 	buf := stream.Buffer() | ||||
| 	abs := math.Abs(p.V) | ||||
| 	fmt := byte('f') | ||||
| 	// Note: Must use float32 comparisons for underlying float32 value to get precise cutoffs right.
 | ||||
| 	if abs != 0 { | ||||
| 		if abs < 1e-6 || abs >= 1e21 { | ||||
| 			fmt = 'e' | ||||
| 		} | ||||
| 	} | ||||
| 	buf = strconv.AppendFloat(buf, p.V, fmt, -1, 64) | ||||
| 	stream.SetBuffer(buf) | ||||
| 
 | ||||
| 	stream.WriteRaw(`"`) | ||||
| 	stream.WriteArrayEnd() | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| func marshalPointJSONIsEmpty(ptr unsafe.Pointer) bool { | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue