Check for errors when calling std::stod in XML loading.

PiperOrigin-RevId: 576608985
Change-Id: I148ca67d8960d73c281df2d6f2440d47940a6369
This commit is contained in:
Nimrod Gileadi
2023-10-25 12:25:33 -07:00
committed by Copybara-Service
parent 034bb62986
commit f8c5ad2ba8
3 changed files with 39 additions and 5 deletions
+6 -1
View File
@@ -20,6 +20,7 @@
#include <cstdio>
#include <cstring>
#include <map>
#include <stdexcept>
#include <string>
#include <utility>
#include <vector>
@@ -406,7 +407,11 @@ bool mjCComposite::MakeParticle(mjCModel* model, mjCBody* body, char* error, int
std::vector<mjtNum> volume(uservert.size()/3);
mjtNum t = 1;
if (dim == 2 && plugin_instance) {
t = stod(plugin_instance->config_attribs["thickness"], nullptr);
try {
t = std::stod(plugin_instance->config_attribs["thickness"], nullptr);
} catch (const std::invalid_argument& e) {
return comperr(error, "Invalid thickness attribute", error_sz);
}
}
if (!userface.empty()) {
mjXUtil::String2Vector(userface, face);