diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 82c6181..6b5ee9a 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -23,7 +23,7 @@ on: jobs: analyze: name: Analyze - runs-on: self-hosted + runs-on: [self-hosted, X64] permissions: actions: read contents: read diff --git a/decoder/stream.go b/decoder/stream.go index 273b439..4cb34fc 100644 --- a/decoder/stream.go +++ b/decoder/stream.go @@ -80,6 +80,9 @@ read_more: if err != nil { repeat = false if err == io.EOF { + if len(buf) == 0 { + return err + } break } self.err = err diff --git a/decoder/stream_test.go b/decoder/stream_test.go index a18fde3..00dab68 100644 --- a/decoder/stream_test.go +++ b/decoder/stream_test.go @@ -35,6 +35,20 @@ var ( strings.Repeat("2",1024)+`"} b {}` ) +func TestDecodeEmpty(t *testing.T) { + var str = `` + var r1 = strings.NewReader(str) + var v1 interface{} + var d1 = json.NewDecoder(r1) + var r2 = strings.NewReader(str) + var v2 interface{} + var d2 = NewStreamDecoder(r2) + es1 := d1.Decode(&v1) + ee1 := d2.Decode(&v2) + assert.Equal(t, es1, ee1) + assert.Equal(t, v1, v2) +} + func TestDecodeSingle(t *testing.T) { var str = _Single_JSON