From c5716a21581e36d24f11706f7e6c28cce3115dfb Mon Sep 17 00:00:00 2001 From: milek7 Date: Thu, 12 Oct 2017 21:57:15 +0200 Subject: [PATCH] sound crash fix --- sound.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/sound.cpp b/sound.cpp index 652ecf3d..be956d70 100644 --- a/sound.cpp +++ b/sound.cpp @@ -71,7 +71,10 @@ sound_manager::~sound_manager() sound_buffer* sound_manager::find_buffer(std::string name) { - name.erase(name.rfind('.')); + size_t pos = name.rfind('.'); + if (pos != name.npos) + name.erase(pos); + std::replace(name.begin(), name.end(), '\\', '/'); auto search = buffers.find(name); @@ -86,7 +89,10 @@ std::string sound_manager::find_file(std::string name) if (FileExists(name)) return name; - name.erase(name.rfind('.')); + size_t pos = name.rfind('.'); + if (pos != name.npos) + name.erase(pos); + std::vector exts { ".wav", ".WAV", ".flac", ".ogg" }; for (auto const &ext : exts) if (FileExists(name + ext)) @@ -118,7 +124,9 @@ sound_buffer* sound_manager::get_buffer(std::string const &name) buf = new sound_buffer(file); - file.erase(file.rfind('.')); + size_t pos = file.rfind('.'); + if (pos != file.npos) + file.erase(pos); buffers.emplace(file, buf); return buf;