From fa7a8f6a395e3ee5ea9a045d60576b0ac45b6f96 Mon Sep 17 00:00:00 2001 From: Wohlstand Date: Mon, 30 Jun 2025 06:51:44 +0300 Subject: adlmidiplay.cpp: Workaround for GCC-15's std::deque The .resize() method behaving faulty when -std=c++11 is set. It's definitely a bug of compiler. #291 --- utils/midiplay/adlmidiplay.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'utils/midiplay/adlmidiplay.cpp') diff --git a/utils/midiplay/adlmidiplay.cpp b/utils/midiplay/adlmidiplay.cpp index e7ff8ef..e14cf9d 100644 --- a/utils/midiplay/adlmidiplay.cpp +++ b/utils/midiplay/adlmidiplay.cpp @@ -1113,10 +1113,15 @@ static int runAudioLoop(ADL_MIDIPlayer *myDevice, AudioOutputSpec &spec) # endif g_audioBuffer_lock.Lock(); +#if defined(__GNUC__) && (__GNUC__ == 15) // Workaround on faulty std::deque's resize() call when C++11 is set + for(size_t p = 0; p < got; ++p) + g_audioBuffer.push_back(buff[p]); +#else size_t pos = g_audioBuffer.size(); g_audioBuffer.resize(pos + got); for(size_t p = 0; p < got; ++p) g_audioBuffer[pos + p] = buff[p]; +#endif g_audioBuffer_lock.Unlock(); const AudioOutputSpec &spec = obtained; -- cgit v1.2.3