From dfd463cdb5cd315e9fb20b518f0fbbf4ac018de2 Mon Sep 17 00:00:00 2001 From: Kyle Bayes Date: Mon, 20 Mar 2023 08:32:45 -0700 Subject: [PATCH] Reset nnzJ in resetData. PiperOrigin-RevId: 517976421 Change-Id: I329c0096d368062f150c6dbeec181f5b0eeefcbf --- src/engine/engine_io.c | 1 + test/engine/engine_io_test.cc | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/engine/engine_io.c b/src/engine/engine_io.c index 087d22b1..e0fb7372 100644 --- a/src/engine/engine_io.c +++ b/src/engine/engine_io.c @@ -1283,6 +1283,7 @@ static void _resetData(const mjModel* m, mjData* d, unsigned char debug_value) { d->ne = 0; d->nf = 0; d->nefc = 0; + d->nnzJ = 0; d->ncon = 0; // clear global properties diff --git a/test/engine/engine_io_test.cc b/test/engine/engine_io_test.cc index 9517097d..c7a750f9 100644 --- a/test/engine/engine_io_test.cc +++ b/test/engine/engine_io_test.cc @@ -203,6 +203,27 @@ TEST_F(EngineIoTest, MakeDataReturnsNullOnFailure) { mj_deleteModel(model); } +TEST_F(EngineIoTest, ResetVariableSizes) { + constexpr char xml[] = ""; + + std::array error; + mjModel* model = LoadModelFromString(xml, error.data(), error.size()); + ASSERT_THAT(model, NotNull()) << "Failed to load model: " << error.data(); + + mjData* data = mj_makeData(model); + ASSERT_THAT(model, NotNull()) << "Failed to create mjData"; + + // don't call mj_forward, vars should be reset + EXPECT_EQ(data->ne, 0); + EXPECT_EQ(data->nf, 0); + EXPECT_EQ(data->nefc, 0); + EXPECT_EQ(data->nnzJ, 0); + EXPECT_EQ(data->ncon, 0); + + mj_deleteData(data); + mj_deleteModel(model); +} + using ValidateReferencesTest = MujocoTest; TEST_F(ValidateReferencesTest, BodyReferences) {