Core/Common/VideoCommon: Fix some weird (!eof) logic.

This commit is contained in:
Jordan Woyak 2024-11-07 16:52:39 -06:00
parent 7e1074b140
commit 3560dce0d6
3 changed files with 29 additions and 43 deletions

View File

@ -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.

View File

@ -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++;

View File

@ -137,43 +137,40 @@ void PostProcessingConfiguration::LoadOptions(const std::string& code)
std::vector<GLSLStringOption> 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);
}
}
}