Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package libopenmpt for openSUSE:Factory checked in at 2023-11-07 21:25:11 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libopenmpt (Old) and /work/SRC/openSUSE:Factory/.libopenmpt.new.17445 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libopenmpt" Tue Nov 7 21:25:11 2023 rev:44 rq:1123699 version:0.7.3 Changes: -------- --- /work/SRC/openSUSE:Factory/libopenmpt/libopenmpt.changes 2023-06-30 19:58:04.045356253 +0200 +++ /work/SRC/openSUSE:Factory/.libopenmpt.new.17445/libopenmpt.changes 2023-11-07 21:25:15.609086909 +0100 @@ -1,0 +2,7 @@ +Tue Nov 7 00:48:48 UTC 2023 - Mia Herkt <m...@0x0.st> + +- Update to 0.7.3: + * Fix: set_pitch_factor no longer affected OPL instruments since + version 0.6.0. + +------------------------------------------------------------------- Old: ---- libopenmpt-0.7.2+release.autotools.tar.gz New: ---- libopenmpt-0.7.3+release.autotools.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libopenmpt.spec ++++++ --- /var/tmp/diff_new_pack.yu5Yw7/_old 2023-11-07 21:25:16.321113129 +0100 +++ /var/tmp/diff_new_pack.yu5Yw7/_new 2023-11-07 21:25:16.321113129 +0100 @@ -21,7 +21,7 @@ %define libopenmpt_modplug_version 0.8.9.0 Name: libopenmpt -Version: 0.7.2 +Version: 0.7.3 Release: 0 Summary: C++ and C library to decode tracker music files License: BSD-3-Clause ++++++ libopenmpt-0.7.2+release.autotools.tar.gz -> libopenmpt-0.7.3+release.autotools.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libopenmpt-0.7.2+release.autotools/common/mptTime.cpp new/libopenmpt-0.7.3+release.autotools/common/mptTime.cpp --- old/libopenmpt-0.7.2+release.autotools/common/mptTime.cpp 2022-07-15 17:00:38.000000000 +0200 +++ new/libopenmpt-0.7.3+release.autotools/common/mptTime.cpp 2023-07-23 11:21:01.000000000 +0200 @@ -17,7 +17,7 @@ #include "mptStringBuffer.h" -#if MPT_CXX_AT_LEAST(20) && !defined(MPT_LIBCXX_QUIRK_NO_CHRONO_DATE) +#if MPT_CXX_AT_LEAST(20) && !defined(MPT_LIBCXX_QUIRK_NO_CHRONO) && !defined(MPT_LIBCXX_QUIRK_NO_CHRONO_DATE) #include <chrono> #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libopenmpt-0.7.2+release.autotools/common/mptTime.h new/libopenmpt-0.7.3+release.autotools/common/mptTime.h --- old/libopenmpt-0.7.2+release.autotools/common/mptTime.h 2023-05-26 09:37:04.000000000 +0200 +++ new/libopenmpt-0.7.3+release.autotools/common/mptTime.h 2023-07-23 11:21:01.000000000 +0200 @@ -12,7 +12,7 @@ #include "openmpt/all/BuildSettings.hpp" -#if MPT_CXX_AT_LEAST(20) && !defined(MPT_LIBCXX_QUIRK_NO_CHRONO_DATE) +#if MPT_CXX_AT_LEAST(20) && !defined(MPT_LIBCXX_QUIRK_NO_CHRONO) && !defined(MPT_LIBCXX_QUIRK_NO_CHRONO_DATE) #include <chrono> #include <exception> #endif @@ -175,7 +175,7 @@ } // namespace nochrono -#if MPT_CXX_AT_LEAST(20) && !defined(MPT_LIBCXX_QUIRK_NO_CHRONO_DATE) +#if MPT_CXX_AT_LEAST(20) && !defined(MPT_LIBCXX_QUIRK_NO_CHRONO) && !defined(MPT_LIBCXX_QUIRK_NO_CHRONO_DATE) using Unix = std::chrono::system_clock::time_point; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libopenmpt-0.7.2+release.autotools/common/version.h new/libopenmpt-0.7.3+release.autotools/common/version.h --- old/libopenmpt-0.7.2+release.autotools/common/version.h 2022-09-10 16:27:35.000000000 +0200 +++ new/libopenmpt-0.7.3+release.autotools/common/version.h 2023-07-25 19:12:08.000000000 +0200 @@ -205,7 +205,7 @@ } -MPT_CONSTEVAL Version operator "" _LiteralVersionImpl (const char * str, std::size_t len) +MPT_CONSTEVAL Version operator ""_LiteralVersionImpl (const char * str, std::size_t len) { return Version::LiteralParser::Parse(str, len); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libopenmpt-0.7.2+release.autotools/common/versionNumber.h new/libopenmpt-0.7.3+release.autotools/common/versionNumber.h --- old/libopenmpt-0.7.2+release.autotools/common/versionNumber.h 2023-06-18 15:01:49.000000000 +0200 +++ new/libopenmpt-0.7.3+release.autotools/common/versionNumber.h 2023-08-27 17:03:08.000000000 +0200 @@ -17,7 +17,7 @@ // Version definitions. The only thing that needs to be changed when changing version number. #define VER_MAJORMAJOR 1 #define VER_MAJOR 31 -#define VER_MINOR 03 +#define VER_MINOR 04 #define VER_MINORMINOR 00 OPENMPT_NAMESPACE_END diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libopenmpt-0.7.2+release.autotools/configure new/libopenmpt-0.7.3+release.autotools/configure --- old/libopenmpt-0.7.2+release.autotools/configure 2023-06-18 15:22:50.000000000 +0200 +++ new/libopenmpt-0.7.3+release.autotools/configure 2023-09-09 14:47:52.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for libopenmpt 0.7.2+release.autotools. +# Generated by GNU Autoconf 2.71 for libopenmpt 0.7.3+release.autotools. # # Report bugs to <https://bugs.openmpt.org/>. # @@ -621,8 +621,8 @@ # Identity of this package. PACKAGE_NAME='libopenmpt' PACKAGE_TARNAME='libopenmpt' -PACKAGE_VERSION='0.7.2+release.autotools' -PACKAGE_STRING='libopenmpt 0.7.2+release.autotools' +PACKAGE_VERSION='0.7.3+release.autotools' +PACKAGE_STRING='libopenmpt 0.7.3+release.autotools' PACKAGE_BUGREPORT='https://bugs.openmpt.org/' PACKAGE_URL='https://lib.openmpt.org/' @@ -1510,7 +1510,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures libopenmpt 0.7.2+release.autotools to adapt to many kinds of systems. +\`configure' configures libopenmpt 0.7.3+release.autotools to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1581,7 +1581,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of libopenmpt 0.7.2+release.autotools:";; + short | recursive ) echo "Configuration of libopenmpt 0.7.3+release.autotools:";; esac cat <<\_ACEOF @@ -1768,7 +1768,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -libopenmpt configure 0.7.2+release.autotools +libopenmpt configure 0.7.3+release.autotools generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -2148,7 +2148,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by libopenmpt $as_me 0.7.2+release.autotools, which was +It was created by libopenmpt $as_me 0.7.3+release.autotools, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -3644,7 +3644,7 @@ # Define the identity of the package. PACKAGE='libopenmpt' - VERSION='0.7.2+release.autotools' + VERSION='0.7.3+release.autotools' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -21837,13 +21837,13 @@ -printf "%s\n" "#define MPT_SVNURL \"https://source.openmpt.org/svn/openmpt/tags/libopenmpt-0.7.2\"" >>confdefs.h +printf "%s\n" "#define MPT_SVNURL \"https://source.openmpt.org/svn/openmpt/tags/libopenmpt-0.7.3\"" >>confdefs.h -printf "%s\n" "#define MPT_SVNVERSION \"19406\"" >>confdefs.h +printf "%s\n" "#define MPT_SVNVERSION \"19618\"" >>confdefs.h -printf "%s\n" "#define MPT_SVNDATE \"2023-06-18T13:08:13.199805Z\"" >>confdefs.h +printf "%s\n" "#define MPT_SVNDATE \"2023-09-09T11:29:35.564177Z\"" >>confdefs.h printf "%s\n" "#define MPT_PACKAGE true" >>confdefs.h @@ -25798,7 +25798,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by libopenmpt $as_me 0.7.2+release.autotools, which was +This file was extended by libopenmpt $as_me 0.7.3+release.autotools, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -25858,7 +25858,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -libopenmpt config.status 0.7.2+release.autotools +libopenmpt config.status 0.7.3+release.autotools configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libopenmpt-0.7.2+release.autotools/configure.ac new/libopenmpt-0.7.3+release.autotools/configure.ac --- old/libopenmpt-0.7.2+release.autotools/configure.ac 2023-06-18 15:22:26.000000000 +0200 +++ new/libopenmpt-0.7.3+release.autotools/configure.ac 2023-09-09 14:47:21.000000000 +0200 @@ -1,4 +1,4 @@ -AC_INIT([libopenmpt], [0.7.2+release.autotools], [https://bugs.openmpt.org/], [libopenmpt], [https://lib.openmpt.org/]) +AC_INIT([libopenmpt], [0.7.3+release.autotools], [https://bugs.openmpt.org/], [libopenmpt], [https://lib.openmpt.org/]) AC_PREREQ([2.69]) # we do want 2.70, but distributions are not ready yet #AC_PREREQ([2.70]) @@ -62,9 +62,9 @@ AC_SUBST([LIBOPENMPT_LTVER_REVISION]) AC_SUBST([LIBOPENMPT_LTVER_AGE]) -AC_DEFINE([MPT_SVNURL], ["https://source.openmpt.org/svn/openmpt/tags/libopenmpt-0.7.2"], [svn version]) -AC_DEFINE([MPT_SVNVERSION], ["19406"], [svn version]) -AC_DEFINE([MPT_SVNDATE], ["2023-06-18T13:08:13.199805Z"], [svn date]) +AC_DEFINE([MPT_SVNURL], ["https://source.openmpt.org/svn/openmpt/tags/libopenmpt-0.7.3"], [svn version]) +AC_DEFINE([MPT_SVNVERSION], ["19618"], [svn version]) +AC_DEFINE([MPT_SVNDATE], ["2023-09-09T11:29:35.564177Z"], [svn date]) AC_DEFINE([MPT_PACKAGE], [true], [is package]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libopenmpt-0.7.2+release.autotools/doc/libopenmpt/changelog.md new/libopenmpt-0.7.3+release.autotools/doc/libopenmpt/changelog.md --- old/libopenmpt-0.7.2+release.autotools/doc/libopenmpt/changelog.md 2023-06-18 15:08:12.000000000 +0200 +++ new/libopenmpt-0.7.3+release.autotools/doc/libopenmpt/changelog.md 2023-09-09 13:29:34.000000000 +0200 @@ -5,14 +5,24 @@ For fully detailed change log, please see the source repository directly. This is just a high-level summary. -### libopenmpt 0.7.2 (2023-06-18) +### libopenmpt 0.7.3 (2023-09-09) - * [**New**] MOD: Can now read modified 8-channel MOD files from the DOS game - Aleshar - The World Of Ice. + * [**Bug**] Makefile: Emscripten 3.1.31 stopped exporting `malloc` and `free`. + We now explicitly export those again to keep compatibility. + + * `set_pitch_factor` no longer affected OPL instruments since version 0.6.0. + + * FLAC: Update to v1.4.3 (2022-06-23). + * zlib: Update to v1.3 (2022-08-18). + +### libopenmpt 0.7.2 (2023-06-18) * [**Sec**] Possible out-of-bounds read or write when reading malformed MED files. (r19389) + * [**New**] MOD: Can now read modified 8-channel MOD files from the DOS game + Aleshar - The World Of Ice. + * [**Bug**] The C++ API failed to compile with Clang/Emscripten in some situations due to a misplaced `[[deprecated]]`. * [**Bug**] The Opal OPL3 emulator symbols were not namespaced properly. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libopenmpt-0.7.2+release.autotools/libopenmpt/libopenmpt_version.h new/libopenmpt-0.7.3+release.autotools/libopenmpt/libopenmpt_version.h --- old/libopenmpt-0.7.2+release.autotools/libopenmpt/libopenmpt_version.h 2023-06-18 15:08:12.000000000 +0200 +++ new/libopenmpt-0.7.3+release.autotools/libopenmpt/libopenmpt_version.h 2023-09-09 13:29:34.000000000 +0200 @@ -21,7 +21,7 @@ /*! \brief libopenmpt minor version number */ #define OPENMPT_API_VERSION_MINOR 7 /*! \brief libopenmpt patch version number */ -#define OPENMPT_API_VERSION_PATCH 2 +#define OPENMPT_API_VERSION_PATCH 3 /*! \brief libopenmpt pre-release tag */ #define OPENMPT_API_VERSION_PREREL "" /*! \brief libopenmpt pre-release flag */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libopenmpt-0.7.2+release.autotools/libopenmpt/libopenmpt_version.mk new/libopenmpt-0.7.3+release.autotools/libopenmpt/libopenmpt_version.mk --- old/libopenmpt-0.7.2+release.autotools/libopenmpt/libopenmpt_version.mk 2023-06-18 15:08:12.000000000 +0200 +++ new/libopenmpt-0.7.3+release.autotools/libopenmpt/libopenmpt_version.mk 2023-09-09 13:29:34.000000000 +0200 @@ -1,8 +1,8 @@ LIBOPENMPT_VERSION_MAJOR=0 LIBOPENMPT_VERSION_MINOR=7 -LIBOPENMPT_VERSION_PATCH=2 +LIBOPENMPT_VERSION_PATCH=3 LIBOPENMPT_VERSION_PREREL= LIBOPENMPT_LTVER_CURRENT=4 -LIBOPENMPT_LTVER_REVISION=2 +LIBOPENMPT_LTVER_REVISION=3 LIBOPENMPT_LTVER_AGE=4 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libopenmpt-0.7.2+release.autotools/man/openmpt123.1 new/libopenmpt-0.7.3+release.autotools/man/openmpt123.1 --- old/libopenmpt-0.7.2+release.autotools/man/openmpt123.1 2023-06-18 15:22:25.000000000 +0200 +++ new/libopenmpt-0.7.3+release.autotools/man/openmpt123.1 2023-09-09 14:47:20.000000000 +0200 @@ -1,12 +1,12 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. -.TH OPENMPT123 "1" "June 2023" "openmpt123 v0.7.2" "User Commands" +.TH OPENMPT123 "1" "September 2023" "openmpt123 v0.7.3" "User Commands" .SH NAME openmpt123 - command line module music player based on libopenmpt .SH SYNOPSIS .B openmpt123 [\fI\,options\/\fR] [\fI\,--\/\fR] \fI\,file1 \/\fR[\fI\,file2\/\fR] ... .SH DESCRIPTION -openmpt123 v0.7.2, libopenmpt 0.7.2+r19406 (OpenMPT 1.31.03.00 https://source.openmpt.org/svn/openmpt/tags/libopenmpt\-0.7.2@19406 (2023\-06\-18T13:08:13.199805Z) clean) +openmpt123 v0.7.3, libopenmpt 0.7.3+r19618 (OpenMPT 1.31.04.00 https://source.openmpt.org/svn/openmpt/tags/libopenmpt\-0.7.3@19618 (2023\-09\-09T11:29:35.564177Z) clean) Copyright \(co 2013\-2023 OpenMPT Project Developers and Contributors <https://lib.openmpt.org/> .PP openmpt123 plays module music files. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libopenmpt-0.7.2+release.autotools/soundlib/Load_sfx.cpp new/libopenmpt-0.7.3+release.autotools/soundlib/Load_sfx.cpp --- old/libopenmpt-0.7.2+release.autotools/soundlib/Load_sfx.cpp 2023-03-18 21:18:35.000000000 +0100 +++ new/libopenmpt-0.7.3+release.autotools/soundlib/Load_sfx.cpp 2023-06-24 14:22:03.000000000 +0200 @@ -207,6 +207,8 @@ SFXSampleHeader sampleHeader; file.ReadStruct(sampleHeader); + // cppcheck false-positive + // cppcheck-suppress uninitvar sampleHeader.ConvertToMPT(Samples[smp], sampleLen[smp - 1]); // Get rid of weird characters in sample names. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libopenmpt-0.7.2+release.autotools/soundlib/Load_xm.cpp new/libopenmpt-0.7.3+release.autotools/soundlib/Load_xm.cpp --- old/libopenmpt-0.7.2+release.autotools/soundlib/Load_xm.cpp 2023-03-14 21:57:02.000000000 +0100 +++ new/libopenmpt-0.7.3+release.autotools/soundlib/Load_xm.cpp 2023-08-05 10:13:26.000000000 +0200 @@ -1051,6 +1051,17 @@ #ifndef MODPLUG_NO_FILESAVE +#if MPT_GCC_AT_LEAST(13, 0, 0) && MPT_GCC_BEFORE(14, 1, 0) +// work-around massively confused GCC 13 optimizer: +// /usr/include/c++/13/bits/stl_algobase.h:437:30: warning: 'void* __builtin_memcpy(void*, const void*, long unsigned int)' writing between 3 and 9223372036854775806 bytes into a region of size 0 overflows the destination [-Wstringop-overflow=] +template <typename Tcont2, typename Tcont1> +static MPT_NOINLINE Tcont1 & gcc_append(Tcont1 & cont1, const Tcont2 & cont2) { + cont1.insert(cont1.end(), cont2.begin(), cont2.end()); + return cont1; +} +#endif + + bool CSoundFile::SaveXM(std::ostream &f, bool compatibilityExport) { @@ -1322,7 +1333,11 @@ } } - samples.insert(samples.end(), additionalSamples.begin(), additionalSamples.end()); +#if MPT_GCC_AT_LEAST(13, 0, 0) && MPT_GCC_BEFORE(14, 1, 0) + gcc_append(samples, additionalSamples); +#else + mpt::append(samples, additionalSamples); +#endif } else { MemsetZero(insHeader); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libopenmpt-0.7.2+release.autotools/soundlib/ModChannel.cpp new/libopenmpt-0.7.3+release.autotools/soundlib/ModChannel.cpp --- old/libopenmpt-0.7.2+release.autotools/soundlib/ModChannel.cpp 2023-03-09 22:10:25.000000000 +0100 +++ new/libopenmpt-0.7.3+release.autotools/soundlib/ModChannel.cpp 2023-08-27 01:36:54.000000000 +0200 @@ -127,16 +127,15 @@ } -ModCommand::NOTE ModChannel::GetPluginNote(bool realNoteMapping, bool ignoreArpeggio) const +ModCommand::NOTE ModChannel::GetPluginNote(bool ignoreArpeggio) const { if(nArpeggioLastNote != NOTE_NONE && !ignoreArpeggio) { - // If an arpeggio is playing, this definitely the last playing note, which may be different from the arpeggio base note stored in nNote. + // If an arpeggio is playing, this definitely the last playing note, which may be different from the arpeggio base note stored in nLastNote. return nArpeggioLastNote; } - ModCommand::NOTE plugNote = mpt::saturate_cast<ModCommand::NOTE>(nNote - nTranspose); - // Caution: When in compatible mode, ModChannel::nNote stores the "real" note, not the mapped note! - if(realNoteMapping && pModInstrument != nullptr && plugNote >= NOTE_MIN && plugNote < (std::size(pModInstrument->NoteMap) + NOTE_MIN)) + ModCommand::NOTE plugNote = nLastNote; + if(pModInstrument != nullptr && plugNote >= NOTE_MIN && plugNote < (std::size(pModInstrument->NoteMap) + NOTE_MIN)) { plugNote = pModInstrument->NoteMap[plugNote - NOTE_MIN]; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libopenmpt-0.7.2+release.autotools/soundlib/ModChannel.h new/libopenmpt-0.7.3+release.autotools/soundlib/ModChannel.h --- old/libopenmpt-0.7.2+release.autotools/soundlib/ModChannel.h 2022-04-10 00:11:00.000000000 +0200 +++ new/libopenmpt-0.7.3+release.autotools/soundlib/ModChannel.h 2023-08-27 01:36:54.000000000 +0200 @@ -187,7 +187,7 @@ uint32 GetVSTVolume() const noexcept { return (pModInstrument) ? pModInstrument->nGlobalVol * 4 : nVolume; } - ModCommand::NOTE GetPluginNote(bool realNoteMapping, bool ignoreArpeggio = false) const; + ModCommand::NOTE GetPluginNote(bool ignoreArpeggio = false) const; // Check if the channel has a valid MIDI output. A return value of true implies that pModInstrument != nullptr. bool HasMIDIOutput() const noexcept { return pModInstrument != nullptr && pModInstrument->HasValidMIDIChannel(); } @@ -208,6 +208,10 @@ void InstrumentControl(uint8 param, const CSoundFile &sndFile); int32 GetMIDIPitchBend() const noexcept { return (static_cast<int32>(microTuning) + 0x8000) / 4; } + void SetMIDIPitchBend(const uint8 high, const uint8 low) noexcept + { + microTuning = static_cast<int16>(((high << 9) | (low << 2)) - 0x8000); + } }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libopenmpt-0.7.2+release.autotools/soundlib/SampleFormats.cpp new/libopenmpt-0.7.3+release.autotools/soundlib/SampleFormats.cpp --- old/libopenmpt-0.7.2+release.autotools/soundlib/SampleFormats.cpp 2023-05-06 00:03:02.000000000 +0200 +++ new/libopenmpt-0.7.3+release.autotools/soundlib/SampleFormats.cpp 2023-06-30 15:27:35.000000000 +0200 @@ -2519,7 +2519,7 @@ size_t GetLength() const { - if(length == 0) // Broken files + if(length == 0 && id == idBODY) // Broken files return std::numeric_limits<size_t>::max(); return length; } @@ -2729,6 +2729,8 @@ static uint32 WriteIFFStringChunk(std::ostream &f, IFFChunk::ChunkIdentifiers id, const std::string &str) { + if(str.empty()) + return 0; IFFChunk chunk{}; chunk.id = id; chunk.length = static_cast<uint32>(str.size()); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libopenmpt-0.7.2+release.autotools/soundlib/SampleIO.cpp new/libopenmpt-0.7.3+release.autotools/soundlib/SampleIO.cpp --- old/libopenmpt-0.7.2+release.autotools/soundlib/SampleIO.cpp 2023-04-11 19:45:08.000000000 +0200 +++ new/libopenmpt-0.7.3+release.autotools/soundlib/SampleIO.cpp 2023-06-30 15:27:35.000000000 +0200 @@ -947,17 +947,20 @@ } } - else if(GetBitDepth() == 16 && GetChannelFormat() == stereoSplit && GetEncoding() == signedPCM && GetEndianness() == bigEndian) + else if(GetBitDepth() == 16 && (GetChannelFormat() == stereoSplit || GetChannelFormat() == mono) + && (GetEncoding() == signedPCM || GetEncoding() == unsignedPCM) && GetEndianness() == bigEndian) { - // Stereo signed split, big-endian - MPT_ASSERT(len == numSamples * 4); - for(uint8 chn = 0; chn < 2; chn++) + // Stereo split / mono signed 16-bit, big-endian + const uint8 numChannels = GetNumChannels(); + const uint16 offset = (GetEncoding() == unsignedPCM) ? 0x8000 : 0; + MPT_ASSERT(len == numSamples * numChannels * 2); + for(uint8 chn = 0; chn < numChannels; chn++) { const int16 *p = sample.sample16() + chn; for(SmpLength j = 0; j < numSamples; j++) { - mpt::IO::Write(fb, mpt::as_be(*p)); - p += 2; + mpt::IO::Write(fb, mpt::as_be(static_cast<int16>(static_cast<uint16>(*p) + offset))); + p += numChannels; } } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libopenmpt-0.7.2+release.autotools/soundlib/Snd_fx.cpp new/libopenmpt-0.7.3+release.autotools/soundlib/Snd_fx.cpp --- old/libopenmpt-0.7.2+release.autotools/soundlib/Snd_fx.cpp 2023-04-13 23:41:51.000000000 +0200 +++ new/libopenmpt-0.7.3+release.autotools/soundlib/Snd_fx.cpp 2023-08-27 01:36:54.000000000 +0200 @@ -326,7 +326,7 @@ for(CHANNELINDEX i = 0; i < GetNumChannels(); i++, m++) { if(m->note == NOTE_NOTECUT || m->note == NOTE_KEYOFF || (m->note == NOTE_FADE && GetNumInstruments()) - || (m->IsNote() && !m->IsPortamento())) + || (m->IsNote() && m->instr && !m->IsPortamento())) { memory.chnSettings[i].ticksToRender = GetLengthMemory::IGNORE_CHANNEL; } @@ -4156,7 +4156,7 @@ IMixPlugin *plugin = GetChannelInstrumentPlugin(chn); if(plugin != nullptr) { - plugin->MidiTonePortamento(delta, chn.GetPluginNote(m_playBehaviour[kITRealNoteMapping], true), chn.pModInstrument->midiPWD, nChn); + plugin->MidiTonePortamento(delta, chn.GetPluginNote(true), chn.pModInstrument->midiPWD, nChn); } } #endif // NO_PLUGINS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libopenmpt-0.7.2+release.autotools/soundlib/Sndmix.cpp new/libopenmpt-0.7.3+release.autotools/soundlib/Sndmix.cpp --- old/libopenmpt-0.7.2+release.autotools/soundlib/Sndmix.cpp 2023-03-30 19:27:17.000000000 +0200 +++ new/libopenmpt-0.7.3+release.autotools/soundlib/Sndmix.cpp 2023-07-17 19:37:12.000000000 +0200 @@ -2387,6 +2387,9 @@ // In ST3, a sample rate of 8363 Hz is mapped to middle-C, which is 261.625 Hz in a tempered scale at A4 = 440. // Hence, we have to translate our "sample rate" into pitch. auto milliHertz = Util::muldivr_unsigned(freq, 261625, 8363 << FREQ_FRACBITS); +#ifndef MODPLUG_TRACKER + milliHertz = Util::muldivr_unsigned(milliHertz, m_nFreqFactor, 65536); +#endif // !MODPLUG_TRACKER const bool keyOff = chn.dwFlags[CHN_KEYOFF] || (chn.dwFlags[CHN_NOTEFADE] && chn.nFadeOutVol == 0); if(!m_playBehaviour[kOPLNoteStopWith0Hz] || !keyOff) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libopenmpt-0.7.2+release.autotools/src/mpt/base/detect_compiler.hpp new/libopenmpt-0.7.3+release.autotools/src/mpt/base/detect_compiler.hpp --- old/libopenmpt-0.7.2+release.autotools/src/mpt/base/detect_compiler.hpp 2023-05-18 10:02:49.000000000 +0200 +++ new/libopenmpt-0.7.3+release.autotools/src/mpt/base/detect_compiler.hpp 2023-08-09 12:44:15.000000000 +0200 @@ -50,7 +50,9 @@ #elif defined(_MSC_VER) #define MPT_COMPILER_MSVC 1 -#if (_MSC_VER >= 1936) +#if (_MSC_VER >= 1937) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2022, 7) +#elif (_MSC_VER >= 1936) #define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2022, 6) #elif (_MSC_VER >= 1935) #define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2022, 5) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libopenmpt-0.7.2+release.autotools/src/mpt/base/detect_quirks.hpp new/libopenmpt-0.7.3+release.autotools/src/mpt/base/detect_quirks.hpp --- old/libopenmpt-0.7.2+release.autotools/src/mpt/base/detect_quirks.hpp 2023-05-26 09:37:04.000000000 +0200 +++ new/libopenmpt-0.7.3+release.autotools/src/mpt/base/detect_quirks.hpp 2023-07-23 11:21:01.000000000 +0200 @@ -242,6 +242,13 @@ #if MPT_CXX_AT_LEAST(20) +// Clang 14 is incompatible with libstdc++ 13 in C++20 mode +#if MPT_CLANG_BEFORE(15, 0, 0) && MPT_LIBCXX_GNU_AT_LEAST(13) +#define MPT_LIBCXX_QUIRK_NO_CHRONO +#endif +#endif + +#if MPT_CXX_AT_LEAST(20) #if MPT_LIBCXX_MS && MPT_OS_WINDOWS #if MPT_WIN_BEFORE(MPT_WIN_10_1903) // std::chrono timezones require Windows 10 1903 with VS2022 as of 2022-01-22. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libopenmpt-0.7.2+release.autotools/src/mpt/base/floatingpoint.hpp new/libopenmpt-0.7.3+release.autotools/src/mpt/base/floatingpoint.hpp --- old/libopenmpt-0.7.2+release.autotools/src/mpt/base/floatingpoint.hpp 2021-05-04 09:21:58.000000000 +0200 +++ new/libopenmpt-0.7.3+release.autotools/src/mpt/base/floatingpoint.hpp 2023-07-25 19:12:08.000000000 +0200 @@ -23,21 +23,21 @@ // fp single using single = float; namespace float_literals { -constexpr single operator"" _fs(long double lit) noexcept { +constexpr single operator""_fs(long double lit) noexcept { return static_cast<single>(lit); } } // namespace float_literals // fp double namespace float_literals { -constexpr double operator"" _fd(long double lit) noexcept { +constexpr double operator""_fd(long double lit) noexcept { return static_cast<double>(lit); } } // namespace float_literals // fp extended namespace float_literals { -constexpr long double operator"" _fe(long double lit) noexcept { +constexpr long double operator""_fe(long double lit) noexcept { return static_cast<long double>(lit); } } // namespace float_literals @@ -47,14 +47,14 @@ using float32 = std::conditional<sizeof(float) == 4, float, std::conditional<sizeof(double) == 4, double, std::conditional<sizeof(long double) == 4, long double, float>::type>::type>::type; namespace float_literals { -constexpr float32 operator"" _f32(long double lit) noexcept { +constexpr float32 operator""_f32(long double lit) noexcept { return static_cast<float32>(lit); } } // namespace float_literals using float64 = std::conditional<sizeof(float) == 8, float, std::conditional<sizeof(double) == 8, double, std::conditional<sizeof(long double) == 8, long double, double>::type>::type>::type; namespace float_literals { -constexpr float64 operator"" _f64(long double lit) noexcept { +constexpr float64 operator""_f64(long double lit) noexcept { return static_cast<float64>(lit); } } // namespace float_literals @@ -79,7 +79,7 @@ using nativefloat = std::conditional<mpt::float_traits<float32>::is_preferred, float32, std::conditional<mpt::float_traits<float64>::is_preferred, float64, std::conditional<std::numeric_limits<float>::is_iec559, float, std::conditional<std::numeric_limits<double>::is_iec559, double, std::conditional<std::numeric_limits<long double>::is_iec559, long double, float>::type>::type>::type>::type>::type; namespace float_literals { -constexpr nativefloat operator"" _nf(long double lit) noexcept { +constexpr nativefloat operator""_nf(long double lit) noexcept { return static_cast<nativefloat>(lit); } } // namespace float_literals diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libopenmpt-0.7.2+release.autotools/src/mpt/parse/tests/tests_parse.hpp new/libopenmpt-0.7.3+release.autotools/src/mpt/parse/tests/tests_parse.hpp --- old/libopenmpt-0.7.2+release.autotools/src/mpt/parse/tests/tests_parse.hpp 2022-12-24 15:56:24.000000000 +0100 +++ new/libopenmpt-0.7.3+release.autotools/src/mpt/parse/tests/tests_parse.hpp 2023-08-26 15:41:53.000000000 +0200 @@ -65,7 +65,9 @@ #endif MPT_TEST_EXPECT_EQUAL(mpt::parse<float>(mpt::format<std::string>::val(-87.0)), -87.0f); -#if !MPT_OS_DJGPP + // VS2022 17.7.2 parses "-5e-07" as -5.0000000000000004e-06 instead of -4.9999999999999998e-07 which is closer + // https://developercommunity.visualstudio.com/t/Parsing-double-from-stringstream-returns/10450694 +#if !MPT_OS_DJGPP && !(MPT_COMPILER_MSVC && MPT_COMPILER_MSVC_VERSION == MPT_COMPILER_MAKE_VERSION2(2022, 7)) MPT_TEST_EXPECT_EQUAL(mpt::parse<double>(mpt::format<std::string>::val(-0.5e-6)), -0.5e-6); #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libopenmpt-0.7.2+release.autotools/src/mpt/path/basic_path.hpp new/libopenmpt-0.7.3+release.autotools/src/mpt/path/basic_path.hpp --- old/libopenmpt-0.7.2+release.autotools/src/mpt/path/basic_path.hpp 2023-01-13 08:56:46.000000000 +0100 +++ new/libopenmpt-0.7.3+release.autotools/src/mpt/path/basic_path.hpp 2023-08-05 07:45:12.000000000 +0200 @@ -504,7 +504,9 @@ // Work-around <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105329> / // <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105651>. #pragma GCC push_options +#if defined(__OPTIMIZE__) #pragma GCC optimize("O1") +#endif // Work-around brain-damaged GCC warning 'void operator delete(void*, std::size_t)' called on a pointer to an unallocated object '"\\\000\\\000\000"'. // Probably a duplicate of one of the many incarnations of <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99098>. #pragma GCC diagnostic push @@ -689,8 +691,10 @@ // Work-around <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105329> / // <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105651>. #pragma GCC push_options +#if defined(__OPTIMIZE__) #pragma GCC optimize("O1") #endif +#endif // Convert a path to its simplified form, i.e. remove ".\" and "..\" entries // Note: We use our own implementation as PathCanonicalize is limited to MAX_PATH // and unlimited versions are only available on Windows 8 and later. @@ -816,8 +820,10 @@ // Work-around <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105329> / // <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105651>. #pragma GCC push_options +#if defined(__OPTIMIZE__) #pragma GCC optimize("O1") #endif +#endif static bool IsAbsolute(const raw_path_type & path) { using namespace path_literals; bool result{}; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libopenmpt-0.7.2+release.autotools/src/mpt/random/device.hpp new/libopenmpt-0.7.3+release.autotools/src/mpt/random/device.hpp --- old/libopenmpt-0.7.2+release.autotools/src/mpt/random/device.hpp 2021-11-04 06:59:02.000000000 +0100 +++ new/libopenmpt-0.7.3+release.autotools/src/mpt/random/device.hpp 2023-07-23 11:47:19.000000000 +0200 @@ -19,7 +19,9 @@ #include "mpt/random/engine_lcg.hpp" #include "mpt/random/random.hpp" +#if !defined(MPT_LIBCXX_QUIRK_NO_CHRONO) #include <chrono> +#endif // !MPT_LIBCXX_QUIRK_NO_CHRONO #include <limits> #include <memory> #include <random> @@ -27,6 +29,9 @@ #include <cmath> #include <cstring> +#if defined(MPT_LIBCXX_QUIRK_NO_CHRONO) +#include <ctime> +#endif // MPT_LIBCXX_QUIRK_NO_CHRONO @@ -75,6 +80,7 @@ // really need here is whitening of the bits. typename mpt::default_radom_seed_hash<T>::type hash; +#if !defined(MPT_LIBCXX_QUIRK_NO_CHRONO) { uint64be time; time = std::chrono::duration_cast<std::chrono::nanoseconds>(std::chrono::system_clock().now().time_since_epoch()).count(); @@ -92,6 +98,15 @@ hash(std::begin(bytes), std::end(bytes)); } #endif // !MPT_COMPILER_QUIRK_CHRONO_NO_HIGH_RESOLUTION_CLOCK +#else // MPT_LIBCXX_QUIRK_NO_CHRONO + { + uint64be time; + time = static_cast<uint64>(std::time(nullptr)); + std::byte bytes[sizeof(time)]; + std::memcpy(bytes, &time, sizeof(time)); + hash(std::begin(bytes), std::end(bytes)); + } +#endif // !MPT_LIBCXX_QUIRK_NO_CHRONO return static_cast<T>(hash.result()); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libopenmpt-0.7.2+release.autotools/src/mpt/uuid/uuid.hpp new/libopenmpt-0.7.3+release.autotools/src/mpt/uuid/uuid.hpp --- old/libopenmpt-0.7.2+release.autotools/src/mpt/uuid/uuid.hpp 2023-01-15 14:24:11.000000000 +0100 +++ new/libopenmpt-0.7.3+release.autotools/src/mpt/uuid/uuid.hpp 2023-07-25 19:12:08.000000000 +0200 @@ -376,7 +376,7 @@ namespace uuid_literals { -MPT_CONSTEVAL mpt::UUID operator"" _uuid(const char * str, std::size_t len) { +MPT_CONSTEVAL mpt::UUID operator""_uuid(const char * str, std::size_t len) { return mpt::UUID::ParseLiteral(str, len); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libopenmpt-0.7.2+release.autotools/test/test.cpp new/libopenmpt-0.7.3+release.autotools/test/test.cpp --- old/libopenmpt-0.7.2+release.autotools/test/test.cpp 2023-04-02 21:30:55.000000000 +0200 +++ new/libopenmpt-0.7.3+release.autotools/test/test.cpp 2023-08-26 15:41:53.000000000 +0200 @@ -902,7 +902,9 @@ #endif VERIFY_EQUAL(mpt::parse<float>(mpt::afmt::val(-87.0)), -87.0f); -#if !MPT_OS_DJGPP + // VS2022 17.7.2 parses "-5e-07" as -5.0000000000000004e-06 instead of -4.9999999999999998e-07 which is closer + // https://developercommunity.visualstudio.com/t/Parsing-double-from-stringstream-returns/10450694 +#if !MPT_OS_DJGPP && !(MPT_COMPILER_MSVC && MPT_COMPILER_MSVC_VERSION == MPT_COMPILER_MAKE_VERSION2(2022, 7)) VERIFY_EQUAL(mpt::parse<double>(mpt::afmt::val(-0.5e-6)), -0.5e-6); #endif @@ -2575,6 +2577,7 @@ conf.Write(U_("Test"), U_("bar"), 42); conf.Read(U_("Test"), U_("baz"), 4711); foobar = conf.Read(U_("Test"), U_("bar"), 28); + VERIFY_EQUAL(foobar, 42); } { @@ -2926,7 +2929,7 @@ VERIFY_EQUAL_NONCONT(mpt::Date::forget_timezone(mpt::Date::UnixAsLocal(mpt::Date::UnixFromUTC(mpt::Date::interpret_as_timezone<mpt::Date::LogicalTimezone::UTC>(fh.loadDate)))).year, 2011); VERIFY_EQUAL_NONCONT(mpt::Date::forget_timezone(mpt::Date::UnixAsLocal(mpt::Date::UnixFromUTC(mpt::Date::interpret_as_timezone<mpt::Date::LogicalTimezone::UTC>(fh.loadDate)))).month, 6); VERIFY_EQUAL_NONCONT(mpt::Date::forget_timezone(mpt::Date::UnixAsLocal(mpt::Date::UnixFromUTC(mpt::Date::interpret_as_timezone<mpt::Date::LogicalTimezone::UTC>(fh.loadDate)))).day, 14); -#if MPT_CXX_AT_LEAST(20) && !defined(MPT_LIBCXX_QUIRK_NO_CHRONO_DATE) +#if MPT_CXX_AT_LEAST(20) && !defined(MPT_LIBCXX_QUIRK_NO_CHRONO) && !defined(MPT_LIBCXX_QUIRK_NO_CHRONO_DATE) VERIFY_EQUAL_NONCONT(mpt::Date::forget_timezone(mpt::Date::UnixAsLocal(mpt::Date::UnixFromUTC(mpt::Date::interpret_as_timezone<mpt::Date::LogicalTimezone::UTC>(fh.loadDate)))).hours, 21); #else #if defined(MPT_FALLBACK_TIMEZONE_WINDOWS_HISTORIC)