From 3560dce0d6b1bfe8eda2f607fe7ba2e8364ead90 Mon Sep 17 00:00:00 2001 From: Jordan Woyak Date: Thu, 7 Nov 2024 16:52:39 -0600 Subject: [PATCH] Core/Common/VideoCommon: Fix some weird (!eof) logic. --- Source/Core/Common/IniFile.cpp | 12 +---- Source/Core/Core/DSP/DSPAssembler.cpp | 9 ++-- Source/Core/VideoCommon/PostProcessing.cpp | 51 ++++++++++------------ 3 files changed, 29 insertions(+), 43 deletions(-) diff --git a/Source/Core/Common/IniFile.cpp b/Source/Core/Common/IniFile.cpp index b345f6c0fe..464cc6338a 100644 --- a/Source/Core/Common/IniFile.cpp +++ b/Source/Core/Common/IniFile.cpp @@ -250,17 +250,9 @@ bool IniFile::Load(const std::string& filename, bool keep_current_data) Section* current_section = nullptr; bool first_line = true; - while (!in.eof()) + std::string line_str; + while (std::getline(in, line_str)) { - std::string line_str; - if (!std::getline(in, line_str)) - { - if (in.eof()) - return true; - else - return false; - } - std::string_view line = line_str; // Skips the UTF-8 BOM at the start of files. Notepad likes to add this. diff --git a/Source/Core/Core/DSP/DSPAssembler.cpp b/Source/Core/Core/DSP/DSPAssembler.cpp index cb42085fb9..01ef9a81e5 100644 --- a/Source/Core/Core/DSP/DSPAssembler.cpp +++ b/Source/Core/Core/DSP/DSPAssembler.cpp @@ -776,14 +776,11 @@ bool DSPAssembler::AssemblePass(const std::string& text, int pass) m_location.line_num = 0; m_cur_pass = pass; -#define LINEBUF_SIZE 1024 - char line[LINEBUF_SIZE] = {0}; - while (!m_failed && !fsrc.fail() && !fsrc.eof()) + constexpr int LINEBUF_SIZE = 1024; + char line[LINEBUF_SIZE] = {}; + while (!m_failed && fsrc.getline(line, LINEBUF_SIZE)) { int opcode_size = 0; - fsrc.getline(line, LINEBUF_SIZE); - if (fsrc.fail()) - break; m_location.line_text = line; m_location.line_num++; diff --git a/Source/Core/VideoCommon/PostProcessing.cpp b/Source/Core/VideoCommon/PostProcessing.cpp index 7b66269ec7..e7ff694161 100644 --- a/Source/Core/VideoCommon/PostProcessing.cpp +++ b/Source/Core/VideoCommon/PostProcessing.cpp @@ -137,43 +137,40 @@ void PostProcessingConfiguration::LoadOptions(const std::string& code) std::vector option_strings; GLSLStringOption* current_strings = nullptr; - while (!in.eof()) + std::string line_str; + while (std::getline(in, line_str)) { - std::string line_str; - if (std::getline(in, line_str)) - { - std::string_view line = line_str; + std::string_view line = line_str; #ifndef _WIN32 - // Check for CRLF eol and convert it to LF - if (!line.empty() && line.at(line.size() - 1) == '\r') - line.remove_suffix(1); + // Check for CRLF eol and convert it to LF + if (!line.empty() && line.at(line.size() - 1) == '\r') + line.remove_suffix(1); #endif - if (!line.empty()) + if (!line.empty()) + { + if (line[0] == '[') { - if (line[0] == '[') - { - size_t endpos = line.find("]"); + size_t endpos = line.find("]"); - if (endpos != std::string::npos) - { - // New section! - std::string_view sub = line.substr(1, endpos - 1); - option_strings.push_back({std::string(sub)}); - current_strings = &option_strings.back(); - } + if (endpos != std::string::npos) + { + // New section! + std::string_view sub = line.substr(1, endpos - 1); + option_strings.push_back({std::string(sub)}); + current_strings = &option_strings.back(); } - else + } + else + { + if (current_strings) { - if (current_strings) - { - std::string key, value; - Common::IniFile::ParseLine(line, &key, &value); + std::string key, value; + Common::IniFile::ParseLine(line, &key, &value); - if (!(key.empty() && value.empty())) - current_strings->m_options.emplace_back(key, value); - } + if (!(key.empty() && value.empty())) + current_strings->m_options.emplace_back(key, value); } } }