Do not delete attached specs after compilation.

Also, copy them when copying the spec.

PiperOrigin-RevId: 688998464
Change-Id: I7229fd8032eafede582194ccf73ab4160fe06768
This commit is contained in:
Alessio Quaglino
2024-10-23 09:41:07 -07:00
committed by Copybara-Service
parent e14aebfd16
commit d17d9e835c
9 changed files with 95 additions and 10 deletions
+2 -2
View File
@@ -387,11 +387,11 @@ mjSpec* ParseXML(const char* filename, const mjVFS* vfs,
return spec;
}
mjSpec* ParseSpecFromString(std::string_view xml, char* error, int nerror) {
mjSpec* ParseSpecFromString(std::string_view xml, const mjVFS* vfs, char* error, int nerror) {
RegisterResourceProvider();
std::string xml2 = {xml.begin(), xml.end()};
std::string str = "LoadModelFromString:" + xml2;
return ParseXML(str.c_str(), nullptr, error, nerror);
return ParseXML(str.c_str(), vfs, error, nerror);
}
// Main writer function - calls mjXWrite
+2 -1
View File
@@ -26,7 +26,8 @@ mjSpec* ParseXML(const char* filename, const mjVFS* vfs, char* error, int nerror
// Returns a newly-allocated mjSpec, loaded from the contents of xml.
// On failure returns nullptr and populates the error array if present.
mjSpec* ParseSpecFromString(std::string_view xml, char* error = nullptr, int nerror = 0);
mjSpec* ParseSpecFromString(std::string_view xml, const mjVFS* vfs = nullptr,
char* error = nullptr, int nerror = 0);
// Main writer function
std::string WriteXML(const mjModel* m, const mjSpec* spec, char* error, int nerror);
+1 -1
View File
@@ -221,7 +221,7 @@ mjSpec* mj_parseXML(const char* filename, const mjVFS* vfs, char* error, int err
// parse spec from string
mjSpec* mj_parseXMLString(const char* xml, const mjVFS* vfs, char* error, int error_sz) {
return ParseSpecFromString(xml, error, error_sz);
return ParseSpecFromString(xml, vfs, error, error_sz);
}