1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-02-25 21:41:04 +00:00

Merge branch 'fix_asan_error' into 'master'

Fix ASAN error: heap-use-after-free

See merge request OpenMW/openmw!1495
This commit is contained in:
psi29a 2022-01-04 10:29:37 +00:00
commit 476d8b7e86
3 changed files with 14 additions and 12 deletions

View File

@ -1,6 +1,7 @@
#include "advancedpage.hpp"
#include <array>
#include <string>
#include <components/config/gamesettings.hpp>
#include <QFileDialog>
@ -20,13 +21,13 @@ Launcher::AdvancedPage::AdvancedPage(Config::GameSettings &gameSettings, QWidget
setObjectName ("AdvancedPage");
setupUi(this);
for(const char * name : Launcher::enumerateOpenALDevices())
for(const std::string& name : Launcher::enumerateOpenALDevices())
{
audioDeviceSelectorComboBox->addItem(QString::fromUtf8(name), QString::fromUtf8(name));
audioDeviceSelectorComboBox->addItem(QString::fromStdString(name), QString::fromStdString(name));
}
for(const char * name : Launcher::enumerateOpenALDevicesHrtf())
for(const std::string& name : Launcher::enumerateOpenALDevicesHrtf())
{
hrtfProfileSelectorComboBox->addItem(QString::fromUtf8(name), QString::fromUtf8(name));
hrtfProfileSelectorComboBox->addItem(QString::fromStdString(name), QString::fromStdString(name));
}
loadSettings();

View File

@ -9,9 +9,9 @@
#define ALC_ALL_DEVICES_SPECIFIER 0x1013
#endif
std::vector<const char *> Launcher::enumerateOpenALDevices()
std::vector<std::string> Launcher::enumerateOpenALDevices()
{
std::vector<const char *> devlist;
std::vector<std::string> devlist;
const ALCchar *devnames;
if(alcIsExtensionPresent(nullptr, "ALC_ENUMERATE_ALL_EXT"))
@ -22,7 +22,7 @@ std::vector<const char *> Launcher::enumerateOpenALDevices()
{
devnames = alcGetString(nullptr, ALC_DEVICE_SPECIFIER);
}
while(devnames && *devnames)
{
devlist.emplace_back(devnames);
@ -31,9 +31,9 @@ std::vector<const char *> Launcher::enumerateOpenALDevices()
return devlist;
}
std::vector<const char *> Launcher::enumerateOpenALDevicesHrtf()
std::vector<std::string> Launcher::enumerateOpenALDevicesHrtf()
{
std::vector<const char *> ret;
std::vector<std::string> ret;
ALCdevice *device = alcOpenDevice(nullptr);
if(device)

View File

@ -1,7 +1,8 @@
#include <vector>
#include <string>
namespace Launcher
{
std::vector<const char *> enumerateOpenALDevices();
std::vector<const char *> enumerateOpenALDevicesHrtf();
}
std::vector<std::string> enumerateOpenALDevices();
std::vector<std::string> enumerateOpenALDevicesHrtf();
}