diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index b50cd36021..976492d81d 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -16,6 +16,7 @@ #include "ReleaseNote.hpp" #include #include +#include #include #include #include @@ -2602,9 +2603,14 @@ void MachineObject::set_print_state(std::string status) // why: printer agents can report progress without BBL cloud task identity. void MachineObject::update_print_progress(const json& value) { - if (value.is_string()) - mc_print_percent = stoi(value.get()); - else if (value.is_number_integer()) + if (value.is_string()) { + const std::string progress = value.get(); + int parsed_progress; + const auto result = std::from_chars(progress.data(), progress.data() + progress.size(), parsed_progress); + if (result.ec != std::errc{} || result.ptr != progress.data() + progress.size()) + return; + mc_print_percent = parsed_progress; + } else if (value.is_number_integer()) mc_print_percent = value.get(); else return;