diff options
author | anon5 <anon5clam@protonmail.com> | 2021-09-09 18:42:02 +0000 |
---|---|---|
committer | anon5 <anon5clam@protonmail.com> | 2021-09-09 18:42:02 +0000 |
commit | d6ba88b091f6c9be3b48ab0fe3f94211ee210700 (patch) | |
tree | 7d4262dd32a69c122838d4865692dbef6f75e769 | |
parent | 152b6697e62c81773646f145c1133c6807d1c007 (diff) | |
download | mt-d6ba88b091f6c9be3b48ab0fe3f94211ee210700.tar.xz |
Fix panic when sending ToCltMinimapModes
Fixes https://github.com/anon55555/mt/issues/3.
-rw-r--r-- | tocltcmds.go | 30 |
1 files changed, 13 insertions, 17 deletions
diff --git a/tocltcmds.go b/tocltcmds.go index 9f8fbd4..14e4299 100644 --- a/tocltcmds.go +++ b/tocltcmds.go @@ -731,35 +731,31 @@ type ToCltMinimapModes struct { Modes []MinimapMode } -func (cmd *ToCltMinimapModes) serialize(w io.Writer) error { +var _ serializer = (*ToCltMinimapModes)(nil) + +func (cmd *ToCltMinimapModes) serialize(w io.Writer) { buf := make([]byte, 4) if len(cmd.Modes) > math.MaxUint16 { - return ErrTooLong + chk(ErrTooLong) } be.PutUint16(buf[0:2], uint16(len(cmd.Modes))) be.PutUint16(buf[2:4], cmd.Current) - if _, err := w.Write(buf); err != nil { - return err - } + _, err := w.Write(buf) + chk(err) for i := range cmd.Modes { - if err := serialize(w, &cmd.Modes[i]); err != nil { - return err - } + chk(serialize(w, &cmd.Modes[i])) } - return nil } -func (cmd *ToCltMinimapModes) deserialize(r io.Reader) error { +var _ deserializer = (*ToCltMinimapModes)(nil) + +func (cmd *ToCltMinimapModes) deserialize(r io.Reader) { buf := make([]byte, 4) - if _, err := io.ReadFull(r, buf); err != nil { - return err - } + _, err := io.ReadFull(r, buf) + chk(err) cmd.Modes = make([]MinimapMode, be.Uint16(buf[0:2])) cmd.Current = be.Uint16(buf[2:4]) for i := range cmd.Modes { - if err := deserialize(r, &cmd.Modes[i]); err != nil { - return err - } + chk(deserialize(r, &cmd.Modes[i])) } - return nil } |