diff --git a/src/core/file_sys/ips_layer.cpp b/src/core/file_sys/ips_layer.cpp index 3b5d626b91..9d46549bf0 100644 --- a/src/core/file_sys/ips_layer.cpp +++ b/src/core/file_sys/ips_layer.cpp @@ -120,7 +120,7 @@ std::array IPSwitchCompiler::GetBuildID() const { static IPSwitchRecord EscapeStringSequences(std::string_view sv) { IPSwitchRecord r{}; - for (auto it = sv.cbegin(); it != sv.cend(); ) { + for (auto it = sv.cbegin(); it < sv.cend(); ) { if (*it == '\\' && it + 1 < sv.cend()) { switch (it[1]) { case 'a': r.data[r.count] = '\a'; break; @@ -198,6 +198,8 @@ void IPSwitchCompiler::Parse(std::span bytes) { LOG_WARNING(Loader, "Unknown flag {}", line); break; } + } else if (patches.empty()) { + LOG_WARNING(Loader, "Invalid line not in a patch {}", line); } else { size_t offset = size_t(std::strtoul(line.data(), nullptr, 16)); offset += size_t(offset_shift);