From cffb077c4b542ff36bac4a518829e3536a3958c4 Mon Sep 17 00:00:00 2001 From: Yuval Tassa Date: Wed, 17 Jun 2026 03:43:28 -0700 Subject: [PATCH] Register atexit handler to clear GlobalModel. PiperOrigin-RevId: 933624252 Change-Id: Ib214514ac5390137dbf1034d113ff8aa9e9cdeb1 --- src/xml/xml_global.cc | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/xml/xml_global.cc b/src/xml/xml_global.cc index 4f8ac8c7..ae030676 100644 --- a/src/xml/xml_global.cc +++ b/src/xml/xml_global.cc @@ -14,9 +14,11 @@ #include "xml/xml_global.h" +#include #include #include #include + #include #include "xml/xml.h" #include "xml/xml_util.h" @@ -48,7 +50,14 @@ std::string GlobalModel::ToXML(const mjModel* m, char* error, return WriteXML(m, spec_, error, error_sz); } +GlobalModel& GetGlobalModel(); + void GlobalModel::Set(mjSpec* spec) { + static std::once_flag atexit_once; + std::call_once(atexit_once, []() { + std::atexit([]() { GetGlobalModel().Set(nullptr); }); + }); + std::lock_guard lock(*mutex_); if (spec_ != nullptr) { mj_deleteSpec(spec_);