summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2023-12-09 13:29:48 +0100
committerHimbeerserverDE <himbeerserverde@gmail.com>2023-12-09 13:29:48 +0100
commit94e1a8ca573fa740347156fa4c325f4d33b99380 (patch)
treeeb65df0692addec15d3f8d10daaadc97c65a0e3b
parentb0bf21e31b429aa1f3e6b3c10dd556680f3e9a0e (diff)
expose all types of trailing data errors
-rw-r--r--deserialize.fmt4
-rw-r--r--internal/mkserialize/mkserialize.go2
-rw-r--r--serialize.go22
-rw-r--r--zerialize.go7
4 files changed, 21 insertions, 14 deletions
diff --git a/deserialize.fmt b/deserialize.fmt
index 5d7b192..9302344 100644
--- a/deserialize.fmt
+++ b/deserialize.fmt
@@ -99,7 +99,7 @@ PointedThing {
chk(err)
(*p)[i] = msg
if r.N > 0 {
- chk(fmt.Errorf("%d bytes of trailing data", r.N))
+ chk(mkDeTrailingDataError(r))
}
}
}
@@ -111,6 +111,6 @@ PointedThing {
(*p)[i].deserialize(r)
}
if r.N > 0 {
- chk(fmt.Errorf("%d bytes of trailing data", r.N))
+ chk(mkDeTrailingDataError(r))
}
}
diff --git a/internal/mkserialize/mkserialize.go b/internal/mkserialize/mkserialize.go
index bd2ead2..4535aaa 100644
--- a/internal/mkserialize/mkserialize.go
+++ b/internal/mkserialize/mkserialize.go
@@ -122,7 +122,7 @@ func structPragma(c *ast.Comment, sp *[]func(), expr string, de bool) {
*sp = append(*sp, func() {
if de {
fmt.Println("if r.N > 0",
- `{ chk(fmt.Errorf("%d bytes of trailing data", r.N)) }`)
+ `{ chk(mkDeTrailingDataError(r)) }`)
} else {
fmt.Println("{")
fmt.Println("buf := w")
diff --git a/serialize.go b/serialize.go
index f0ab39d..e22a7a1 100644
--- a/serialize.go
+++ b/serialize.go
@@ -834,7 +834,7 @@ func (obj *ToSrvInteract) deserialize(r io.Reader) {
}
}
if r.N > 0 {
- chk(fmt.Errorf("%d bytes of trailing data", r.N))
+ chk(mkDeTrailingDataError(r))
}
}
if err := pcall(func() {
@@ -3675,14 +3675,14 @@ func (obj *ToCltNodeDefs) deserialize(r io.Reader) {
(*p)[i].deserialize(r)
}
if r.N > 0 {
- chk(fmt.Errorf("%d bytes of trailing data", r.N))
+ chk(mkDeTrailingDataError(r))
}
}
}
chk(r.Close())
}
if r.N > 0 {
- chk(fmt.Errorf("%d bytes of trailing data", r.N))
+ chk(mkDeTrailingDataError(r))
}
}
}
@@ -4101,7 +4101,7 @@ func (obj *ToCltItemDefs) deserialize(r io.Reader) {
chk(r.Close())
}
if r.N > 0 {
- chk(fmt.Errorf("%d bytes of trailing data", r.N))
+ chk(mkDeTrailingDataError(r))
}
}
}
@@ -18295,7 +18295,7 @@ func (obj *ToCltNodeMetasChanged) deserialize(r io.Reader) {
}
}
if r.N > 0 {
- chk(fmt.Errorf("%d bytes of trailing data", r.N))
+ chk(mkDeTrailingDataError(r))
}
}
}
@@ -28748,7 +28748,7 @@ func (obj *NodeDef) deserialize(r io.Reader) {
}
}
if r.N > 0 {
- chk(fmt.Errorf("%d bytes of trailing data", r.N))
+ chk(mkDeTrailingDataError(r))
}
}
}
@@ -29711,7 +29711,7 @@ func (obj *AOAdd) deserialize(r io.Reader) {
chk(fmt.Errorf("%s: %w", "github.com/HimbeerserverDE/mt.AOInitData", err))
}
if r.N > 0 {
- chk(fmt.Errorf("%d bytes of trailing data", r.N))
+ chk(mkDeTrailingDataError(r))
}
}
}
@@ -29791,7 +29791,7 @@ func (obj *IDAOMsg) deserialize(r io.Reader) {
}
}
if r.N > 0 {
- chk(fmt.Errorf("%d bytes of trailing data", r.N))
+ chk(mkDeTrailingDataError(r))
}
}
}
@@ -32485,7 +32485,7 @@ func (obj *ItemDef) deserialize(r io.Reader) {
chk(fmt.Errorf("%s: %w", "github.com/HimbeerserverDE/mt.SoundDef", err))
}
if r.N > 0 {
- chk(fmt.Errorf("%d bytes of trailing data", r.N))
+ chk(mkDeTrailingDataError(r))
}
}
}
@@ -41160,7 +41160,7 @@ func (obj *AOInitData) deserialize(r io.Reader) {
chk(err)
(*p)[i] = msg
if r.N > 0 {
- chk(fmt.Errorf("%d bytes of trailing data", r.N))
+ chk(mkDeTrailingDataError(r))
}
}
}
@@ -41778,7 +41778,7 @@ func (obj *ToolCaps) deserialize(r io.Reader) {
}
}
if r.N > 0 {
- chk(fmt.Errorf("%d bytes of trailing data", r.N))
+ chk(mkDeTrailingDataError(r))
}
}
}
diff --git a/zerialize.go b/zerialize.go
index 0e07bec..bd4339f 100644
--- a/zerialize.go
+++ b/zerialize.go
@@ -8,6 +8,8 @@ import (
"encoding/binary"
"errors"
"io"
+
+ "github.com/HimbeerserverDE/mt/rudp"
)
// ErrTooLong reports a length that is too long to serialize.
@@ -54,3 +56,8 @@ func chk(err error) {
panic(serializationError{err})
}
}
+
+func mkDeTrailingDataError(r io.Reader) error {
+ buf, _ := io.ReadAll(r)
+ return rudp.TrailingDataError(buf)
+}