From 5347df23c13a008fd31596c54a3d0b5cf1c95acf Mon Sep 17 00:00:00 2001 From: nianjiuhuiyi <64776403+nianjiuhuiyi@users.noreply.github.com> Date: Thu, 13 Jul 2023 22:39:22 +0800 Subject: [PATCH] transform: simplify transform matrix parsing (#1026) --- apps/TransformScene/TransformScene.cpp | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/apps/TransformScene/TransformScene.cpp b/apps/TransformScene/TransformScene.cpp index ec293a7af..10c700362 100644 --- a/apps/TransformScene/TransformScene.cpp +++ b/apps/TransformScene/TransformScene.cpp @@ -234,16 +234,18 @@ int main(int argc, LPCTSTR* argv) if (!OPT::strTransformFileName.empty()) { // transform this scene by the given transform matrix std::ifstream file(MAKE_PATH_SAFE(OPT::strTransformFileName)); - std::string strLine; + std::string value; std::vector transformValues; - while (std::getline(file, strLine)) { - errno = 0; - char* strEnd{}; - const double v = std::strtod(strLine.c_str(), &strEnd); - if (errno == ERANGE || strEnd == strLine.c_str()) - continue; - transformValues.push_back(v); - } + while (file >> value) { + double v; + try { + v = std::stod(value); + } + catch (...) { + continue; + } + transformValues.push_back(v); + } if (transformValues.size() != 12 && (transformValues.size() != 16 || transformValues[12] != 0 || transformValues[13] != 0 || transformValues[14] != 0 || transformValues[15] != 1)) { VERBOSE("error: invalid transform");