From d3e6af6cc9b37c032103bf366ff6fe0af8840e06 Mon Sep 17 00:00:00 2001 From: Celtic Minstrel Date: Sat, 20 Jun 2015 13:07:12 -0400 Subject: [PATCH] Bugfixes - Fix uninitialized data in scenario details (especially rating) - Fix case-sensitive comparison for scenario file extensions --- src/boe.fileio.cpp | 6 ++++-- src/classes/scenario.cpp | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/boe.fileio.cpp b/src/boe.fileio.cpp index 80c597e7e..404a4bfd1 100644 --- a/src/boe.fileio.cpp +++ b/src/boe.fileio.cpp @@ -498,7 +498,9 @@ bool load_scenario_header(fs::path file/*,short header_entry*/){ int dot = fname.find_first_of('.'); if(dot == std::string::npos) return false; // If it has no file extension, it's not a valid scenario. - if(fname.substr(dot) == ".exs") { + std::string file_ext = fname.substr(dot); + std::transform(file_ext.begin(), file_ext.end(), file_ext.begin(), tolower); + if(file_ext == ".exs") { std::ifstream fin(file.string(), std::ios::binary); if(fin.fail()) return false; scenario_header_flags curScen; @@ -510,7 +512,7 @@ bool load_scenario_header(fs::path file/*,short header_entry*/){ file_ok = true; // Legacy Windows scenario else if(curScen.flag1 == 'O' && curScen.flag2 == 'B' && curScen.flag3 == 'O' && curScen.flag4 == 'E') file_ok = true; // Unpacked OBoE scenario - } else if(fname.substr(dot) == ".boes") { + } else if(file_ext == ".boes") { if(fs::is_directory(file)) { if(fs::exists(file/"header.exs")) return load_scenario_header(file/"header.exs"); diff --git a/src/classes/scenario.cpp b/src/classes/scenario.cpp index ca9f4cfbb..ef81d74c7 100644 --- a/src/classes/scenario.cpp +++ b/src/classes/scenario.cpp @@ -61,6 +61,9 @@ cScenario::cScenario() { where_start.x = 24; where_start.y = 24; out_start = where_start; + rating = 0; + difficulty = 0; + intro_pic = intro_mess_pic = 0; bg_out = 10; bg_fight = 4; bg_town = 13;