From 3191b23d4b755a60f14b6b60acfc4758d61b4967 Mon Sep 17 00:00:00 2001 From: vmobilis <75476228+vmobilis@users.noreply.github.com> Date: Fri, 11 Sep 2026 18:16:39 +0300 Subject: [PATCH] fix: handle invalid option numbers (#1961) --- examples/common/common.cpp | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/examples/common/common.cpp b/examples/common/common.cpp index 335a6226..dee151bf 100644 --- a/examples/common/common.cpp +++ b/examples/common/common.cpp @@ -302,8 +302,12 @@ bool parse_options(int argc, const char** argv, const std::vector& o invalid_arg = true; return; } - *option.target = std::stoi(argv[i]); - found_arg = true; + try { + *option.target = std::stoi(argv[i]); + } catch (const std::invalid_argument&) { + invalid_arg = true; + } + found_arg = true; })) break; @@ -312,8 +316,12 @@ bool parse_options(int argc, const char** argv, const std::vector& o invalid_arg = true; return; } - *option.target = std::stof(argv[i]); - found_arg = true; + try { + *option.target = std::stof(argv[i]); + } catch (const std::invalid_argument&) { + invalid_arg = true; + } + found_arg = true; })) break; @@ -337,7 +345,8 @@ bool parse_options(int argc, const char** argv, const std::vector& o if (invalid_arg) { if (!valid) { - LOG_ERROR("error: invalid parameter for argument: %s", arg.c_str()); + LOG_ERROR("error: invalid parameter for argument \"%s\": \"%s\"", + arg.c_str(), (i >= argc) ? "" : argv[i]); } return false; }