Fix return value of mj_saveXML and mj_saveXMLString, fixes #2247

PiperOrigin-RevId: 700269761
Change-Id: Ifb7e9c66c70eac7d681cfcf106712d47291cf9e2
This commit is contained in:
Alessio Quaglino
2024-11-26 02:31:53 -08:00
committed by Copybara-Service
parent 6e129a5ab2
commit e310c23267
7 changed files with 19 additions and 12 deletions
+6 -5
View File
@@ -226,23 +226,24 @@ mjSpec* mj_parseXMLString(const char* xml, const mjVFS* vfs, char* error, int er
// save spec to XML file, return 1 on success, 0 otherwise
// save spec to XML file, return 0 on success, -1 otherwise
int mj_saveXML(const mjSpec* s, const char* filename, char* error, int error_sz) {
std::string result = WriteXML(NULL, s, error, error_sz);
if (result.empty()) {
return 0;
return -1;
}
std::ofstream file;
file.open(filename);
file << result;
file.close();
return 1;
return 0;
}
// save spec to string, return 1 on success, 0 otherwise
// save spec to XML string, return 0 on success, -1 on failure
// if length of the output buffer is too small, returns the required size
int mj_saveXMLString(const mjSpec* s, char* xml, int xml_sz, char* error, int error_sz) {
std::string result = WriteXML(NULL, s, error, error_sz);
if (result.size() >= xml_sz) {
@@ -252,7 +253,7 @@ int mj_saveXMLString(const mjSpec* s, char* xml, int xml_sz, char* error, int er
return result.size();
}
if (result.empty()) {
return 0;
return -1;
}
result.copy(xml, xml_sz);