Ensure we have a valid vfs when loading a spec.

PiperOrigin-RevId: 882503274
Change-Id: Iddbd6f00c0344bb34d68bb72a640c0a8e81076a2
This commit is contained in:
Haroon Qureshi
2026-03-12 04:05:29 -07:00
committed by Copybara-Service
parent 99af6fb9a5
commit 16d618e7b9
2 changed files with 5 additions and 4 deletions
+4 -3
View File
@@ -61,6 +61,10 @@ std::unique_ptr<ModelHolder> ModelHolder::FromBuffer(
return mh;
}
ModelHolder::ModelHolder() {
mj_defaultVFS(&vfs_);
}
ModelHolder::~ModelHolder() {
if (data_) {
mj_deleteData(data_);
@@ -94,7 +98,6 @@ void ModelHolder::InitFromSpec(mjSpec* spec) {
}
void ModelHolder::InitFromFile(std::string_view filepath) {
mj_defaultVFS(&vfs_);
if (filepath.ends_with(".mjb")) {
model_ = mj_loadModel(filepath.data(), &vfs_);
} else {
@@ -108,8 +111,6 @@ void ModelHolder::InitFromFile(std::string_view filepath) {
void ModelHolder::InitFromBuffer(std::span<const std::byte> buffer,
std::string_view content_type,
std::string_view filename) {
mj_defaultVFS(&vfs_);
if (content_type == "text/xml") {
const char* ptr = reinterpret_cast<const char*>(buffer.data());
spec_ = mj_parseXMLString(ptr, nullptr, error_, sizeof(error_));
+1 -1
View File
@@ -64,7 +64,7 @@ class ModelHolder {
mjModel* ReleaseModel();
private:
ModelHolder() = default;
ModelHolder();
void InitFromSpec(mjSpec* spec);
void InitFromFile(std::string_view filepath);
void InitFromBuffer(std::span<const std::byte> buffer,