From b7fe3dad46028d8aecbfbe9233fcf6a3a9e71e6d Mon Sep 17 00:00:00 2001 From: Peter Johnson Date: Fri, 10 Apr 2026 12:28:17 -0700 Subject: [PATCH] [ntcore] WireDecodeBinary: Fix some mpack paths (#8738) --- ntcore/src/main/native/cpp/net/WireDecoder.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ntcore/src/main/native/cpp/net/WireDecoder.cpp b/ntcore/src/main/native/cpp/net/WireDecoder.cpp index 861ac91872..a031043339 100644 --- a/ntcore/src/main/native/cpp/net/WireDecoder.cpp +++ b/ntcore/src/main/native/cpp/net/WireDecoder.cpp @@ -581,9 +581,12 @@ bool wpi::nt::net::WireDecodeBinary(std::span* in, int* outId, } default: *error = fmt::format("unrecognized type {}", type); + mpack_done_array(&reader); + mpack_reader_destroy(&reader); return false; } mpack_done_array(&reader); + auto remaining = mpack_reader_remaining(&reader, nullptr); auto err = mpack_reader_destroy(&reader); if (err != mpack_ok) { *error = mpack_error_to_string(err); @@ -593,6 +596,6 @@ bool wpi::nt::net::WireDecodeBinary(std::span* in, int* outId, outValue->SetServerTime(time); outValue->SetTime(time == 0 ? 0 : time + localTimeOffset); // update input range - *in = wpi::util::take_back(*in, mpack_reader_remaining(&reader, nullptr)); + *in = wpi::util::take_back(*in, remaining); return true; }