diff options
Diffstat (limited to 'src/input_common/drivers/tas_input.cpp')
| -rw-r--r-- | src/input_common/drivers/tas_input.cpp | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/src/input_common/drivers/tas_input.cpp b/src/input_common/drivers/tas_input.cpp index 579fd9473..944e141bf 100644 --- a/src/input_common/drivers/tas_input.cpp +++ b/src/input_common/drivers/tas_input.cpp | |||
| @@ -106,10 +106,16 @@ void Tas::LoadTasFile(size_t player_index, size_t file_index) { | |||
| 106 | continue; | 106 | continue; |
| 107 | } | 107 | } |
| 108 | 108 | ||
| 109 | const auto num_frames = std::stoi(seg_list[0]); | 109 | try { |
| 110 | while (frame_no < num_frames) { | 110 | const auto num_frames = std::stoi(seg_list[0]); |
| 111 | commands[player_index].emplace_back(); | 111 | while (frame_no < num_frames) { |
| 112 | frame_no++; | 112 | commands[player_index].emplace_back(); |
| 113 | frame_no++; | ||
| 114 | } | ||
| 115 | } catch (const std::invalid_argument&) { | ||
| 116 | LOG_ERROR(Input, "Invalid argument: '{}' at command {}", seg_list[0], frame_no); | ||
| 117 | } catch (const std::out_of_range&) { | ||
| 118 | LOG_ERROR(Input, "Out of range: '{}' at command {}", seg_list[0], frame_no); | ||
| 113 | } | 119 | } |
| 114 | 120 | ||
| 115 | TASCommand command = { | 121 | TASCommand command = { |
| @@ -234,10 +240,21 @@ TasAnalog Tas::ReadCommandAxis(const std::string& line) const { | |||
| 234 | } | 240 | } |
| 235 | } | 241 | } |
| 236 | 242 | ||
| 237 | const float x = std::stof(seg_list.at(0)) / 32767.0f; | 243 | if (seg_list.size() < 2) { |
| 238 | const float y = std::stof(seg_list.at(1)) / 32767.0f; | 244 | LOG_ERROR(Input, "Invalid axis data: '{}'", line); |
| 245 | return {}; | ||
| 246 | } | ||
| 239 | 247 | ||
| 240 | return {x, y}; | 248 | try { |
| 249 | const float x = std::stof(seg_list.at(0)) / 32767.0f; | ||
| 250 | const float y = std::stof(seg_list.at(1)) / 32767.0f; | ||
| 251 | return {x, y}; | ||
| 252 | } catch (const std::invalid_argument&) { | ||
| 253 | LOG_ERROR(Input, "Invalid argument: '{}'", line); | ||
| 254 | } catch (const std::out_of_range&) { | ||
| 255 | LOG_ERROR(Input, "Out of range: '{}'", line); | ||
| 256 | } | ||
| 257 | return {}; | ||
| 241 | } | 258 | } |
| 242 | 259 | ||
| 243 | u64 Tas::ReadCommandButtons(const std::string& line) const { | 260 | u64 Tas::ReadCommandButtons(const std::string& line) const { |