From a511ad3d2a57a5e9da05d3ab0ffeae4d71c09956 Mon Sep 17 00:00:00 2001 From: Tnze Date: Sun, 23 Apr 2023 23:00:24 +0800 Subject: [PATCH] Fix the issue of snbt being unable to handle nested Tag*Arrays in TagCompound --- nbt/snbt_scanner.go | 2 +- nbt/snbt_scanner_test.go | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/nbt/snbt_scanner.go b/nbt/snbt_scanner.go index 392b34e..0df85ce 100644 --- a/nbt/snbt_scanner.go +++ b/nbt/snbt_scanner.go @@ -234,7 +234,7 @@ func stateArrayT(s *scanner, c byte) int { return scanSkipSpace } if c == ']' { // empty array - return scanEndValue + return stateEndValue(s, c) } return stateBeginValue(s, c) } diff --git a/nbt/snbt_scanner_test.go b/nbt/snbt_scanner_test.go index 1fb6976..4f75ba3 100644 --- a/nbt/snbt_scanner_test.go +++ b/nbt/snbt_scanner_test.go @@ -9,7 +9,7 @@ func TestSNBT_checkScanCode(t *testing.T) { // t.SkipNow() var s scanner s.reset() - for _, c := range []byte(`{b:[vanilla],c:0D}`) { + for _, c := range []byte(`{a:[B;]}`) { t.Logf("[%c] - %d", c, s.step(&s, c)) } t.Logf("[%c] - %d", ' ', s.eof()) @@ -74,6 +74,7 @@ func TestSNBT_list(t *testing.T) { `[B,C,D]`, `[L, "abc"]`, // List of string (like array) `[B; 01B, 02B, 3B, 10B, 127B]`, // Array `[I;]`, `[B; ]`, // Empty array + `{a:[],b:[B;]}`, // List or Array in TagCompound } var s scanner scan := func(str string) bool {