Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package libopenmpt for openSUSE:Factory 
checked in at 2026-11-03 17:52:44
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libopenmpt (Old)
 and      /work/SRC/openSUSE:Factory/.libopenmpt.new.1257 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libopenmpt"

Tue Nov  3 17:52:44 2026 rev:61 rq:1394412 version:0.8.10

Changes:
--------
--- /work/SRC/openSUSE:Factory/libopenmpt/libopenmpt.changes    2026-08-25 
13:18:19.515227557 +0200
+++ /work/SRC/openSUSE:Factory/.libopenmpt.new.1257/libopenmpt.changes  
2026-11-03 17:53:12.661415813 +0100
@@ -1,0 +2,10 @@
+Sun Nov  1 13:11:32 UTC 2026 - Martin Hauke <[email protected]>
+
+- Update to version 0.8.10
+  * [Sec] Possible heap out-of-bounds write when loading SymMOD
+    files containing WAV IMA ADPCM samples (r25623, r25645).
+    See also 
https://github.com/OpenMPT/openmpt/security/advisories/GHSA-fxf7-wc37-p2cx
+  * [Sec] Possible heap out-of-bounds read when loading custom
+    tunings from MPTM files (r25609, r25615).
+
+-------------------------------------------------------------------

Old:
----
  libopenmpt-0.8.9+release.autotools.tar.gz

New:
----
  libopenmpt-0.8.10+release.autotools.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libopenmpt.spec ++++++
--- /var/tmp/diff_new_pack.EWHWjf/_old  2026-11-03 17:53:13.954469862 +0100
+++ /var/tmp/diff_new_pack.EWHWjf/_new  2026-11-03 17:53:13.959470071 +0100
@@ -18,10 +18,10 @@
 
 %define libopenmpt libopenmpt0
 %define libopenmpt_modplug libopenmpt_modplug1
-%define libopenmpt_modplug_version 0.8.9.0
+%define libopenmpt_modplug_version 0.8.10.0
 
 Name:           libopenmpt
-Version:        0.8.9
+Version:        0.8.10
 Release:        0
 Summary:        C++ and C library to decode tracker music files
 License:        BSD-3-Clause

++++++ libopenmpt-0.8.9+release.autotools.tar.gz -> 
libopenmpt-0.8.10+release.autotools.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libopenmpt-0.8.9+release.autotools/common/versionNumber.h 
new/libopenmpt-0.8.10+release.autotools/common/versionNumber.h
--- old/libopenmpt-0.8.9+release.autotools/common/versionNumber.h       
2026-08-18 23:11:45.000000000 +0200
+++ new/libopenmpt-0.8.10+release.autotools/common/versionNumber.h      
2026-10-31 19:17:18.000000000 +0100
@@ -15,5 +15,5 @@
 // Version definitions. The only thing that needs to be changed when changing 
version number.
 #define VER_MAJORMAJOR  1
 #define VER_MAJOR      32
-#define VER_MINOR      11
-#define VER_MINORMINOR 02
+#define VER_MINOR      12
+#define VER_MINORMINOR 00
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libopenmpt-0.8.9+release.autotools/configure 
new/libopenmpt-0.8.10+release.autotools/configure
--- old/libopenmpt-0.8.9+release.autotools/configure    2026-08-19 
11:21:40.000000000 +0200
+++ new/libopenmpt-0.8.10+release.autotools/configure   2026-10-31 
22:31:30.000000000 +0100
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.71 for libopenmpt 0.8.9+release.autotools.
+# Generated by GNU Autoconf 2.71 for libopenmpt 0.8.10+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.8.9+release.autotools'
-PACKAGE_STRING='libopenmpt 0.8.9+release.autotools'
+PACKAGE_VERSION='0.8.10+release.autotools'
+PACKAGE_STRING='libopenmpt 0.8.10+release.autotools'
 PACKAGE_BUGREPORT='https://bugs.openmpt.org/'
 PACKAGE_URL='https://lib.openmpt.org/'
 
@@ -1514,7 +1514,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.8.9+release.autotools to adapt to many 
kinds of systems.
+\`configure' configures libopenmpt 0.8.10+release.autotools to adapt to many 
kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1585,7 +1585,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of libopenmpt 
0.8.9+release.autotools:";;
+     short | recursive ) echo "Configuration of libopenmpt 
0.8.10+release.autotools:";;
    esac
   cat <<\_ACEOF
 
@@ -1772,7 +1772,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-libopenmpt configure 0.8.9+release.autotools
+libopenmpt configure 0.8.10+release.autotools
 generated by GNU Autoconf 2.71
 
 Copyright (C) 2021 Free Software Foundation, Inc.
@@ -2152,7 +2152,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.8.9+release.autotools, which was
+It was created by libopenmpt $as_me 0.8.10+release.autotools, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   $ $0$ac_configure_args_raw
@@ -3648,7 +3648,7 @@
 
 # Define the identity of the package.
  PACKAGE='libopenmpt'
- VERSION='0.8.9+release.autotools'
+ VERSION='0.8.10+release.autotools'
 
 
 printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -23188,13 +23188,13 @@
 
 
 
-printf "%s\n" "#define MPT_SVNURL 
\"https://source.openmpt.org/svn/openmpt/tags/libopenmpt-0.8.9\""; >>confdefs.h
+printf "%s\n" "#define MPT_SVNURL 
\"https://source.openmpt.org/svn/openmpt/tags/libopenmpt-0.8.10\""; >>confdefs.h
 
 
-printf "%s\n" "#define MPT_SVNVERSION \"25652\"" >>confdefs.h
+printf "%s\n" "#define MPT_SVNVERSION \"25841\"" >>confdefs.h
 
 
-printf "%s\n" "#define MPT_SVNDATE \"2026-08-19T07:15:57.388610Z\"" 
>>confdefs.h
+printf "%s\n" "#define MPT_SVNDATE \"2026-10-31T18:27:32.287400Z\"" 
>>confdefs.h
 
 
 printf "%s\n" "#define MPT_PACKAGE true" >>confdefs.h
@@ -27168,7 +27168,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.8.9+release.autotools, which was
+This file was extended by libopenmpt $as_me 0.8.10+release.autotools, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -27228,7 +27228,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
-libopenmpt config.status 0.8.9+release.autotools
+libopenmpt config.status 0.8.10+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.8.9+release.autotools/configure.ac 
new/libopenmpt-0.8.10+release.autotools/configure.ac
--- old/libopenmpt-0.8.9+release.autotools/configure.ac 2026-08-19 
11:21:10.000000000 +0200
+++ new/libopenmpt-0.8.10+release.autotools/configure.ac        2026-10-31 
22:31:00.000000000 +0100
@@ -1,4 +1,4 @@
-AC_INIT([libopenmpt], [0.8.9+release.autotools], [https://bugs.openmpt.org/], 
[libopenmpt], [https://lib.openmpt.org/])
+AC_INIT([libopenmpt], [0.8.10+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])
@@ -88,9 +88,9 @@
 AC_SUBST([LIBOPENMPT_LTVER_REVISION])
 AC_SUBST([LIBOPENMPT_LTVER_AGE])
 
-AC_DEFINE([MPT_SVNURL], 
["https://source.openmpt.org/svn/openmpt/tags/libopenmpt-0.8.9";], [svn version])
-AC_DEFINE([MPT_SVNVERSION], ["25652"], [svn version])
-AC_DEFINE([MPT_SVNDATE], ["2026-08-19T07:15:57.388610Z"], [svn date])
+AC_DEFINE([MPT_SVNURL], 
["https://source.openmpt.org/svn/openmpt/tags/libopenmpt-0.8.10";], [svn 
version])
+AC_DEFINE([MPT_SVNVERSION], ["25841"], [svn version])
+AC_DEFINE([MPT_SVNDATE], ["2026-10-31T18:27:32.287400Z"], [svn date])
 AC_DEFINE([MPT_PACKAGE], [true], [is package])
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libopenmpt-0.8.9+release.autotools/doc/libopenmpt/changelog.md 
new/libopenmpt-0.8.10+release.autotools/doc/libopenmpt/changelog.md
--- old/libopenmpt-0.8.9+release.autotools/doc/libopenmpt/changelog.md  
2026-08-19 09:15:55.000000000 +0200
+++ new/libopenmpt-0.8.10+release.autotools/doc/libopenmpt/changelog.md 
2026-10-31 19:27:30.000000000 +0100
@@ -5,6 +5,18 @@
 For fully detailed change log, please see the source repository directly. This
 is just a high-level summary.
 
+### libopenmpt 0.8.10 (2026-10-31)
+
+ *  [**Sec**] SymMOD: Potential divison by 0 when trying to decode an embedded
+    IMA ADPCM WAV sample claiming to contain 0 audio channels (r25831).
+
+ *  [**Bug**] SymMOD: It was possible that a fact chunk of an embedded WAV file
+    claimed an impossibly big sample length for an IMA ADPCM sample, causing
+    unnecessarily large memory allocations.
+
+ *  Volume column portamento effect memory was not updated properly during
+    seeking, causing notes to continue playing at the wrong pitch.
+
 ### libopenmpt 0.8.9 (2026-08-19)
 
  *  [**Sec**] Possible heap out-of-bounds write when loading SymMOD files
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libopenmpt-0.8.9+release.autotools/libopenmpt/libopenmpt_version.h 
new/libopenmpt-0.8.10+release.autotools/libopenmpt/libopenmpt_version.h
--- old/libopenmpt-0.8.9+release.autotools/libopenmpt/libopenmpt_version.h      
2026-08-19 09:15:55.000000000 +0200
+++ new/libopenmpt-0.8.10+release.autotools/libopenmpt/libopenmpt_version.h     
2026-10-31 19:27:30.000000000 +0100
@@ -21,7 +21,7 @@
 /*! \brief libopenmpt minor version number */
 #define OPENMPT_API_VERSION_MINOR 8
 /*! \brief libopenmpt patch version number */
-#define OPENMPT_API_VERSION_PATCH 9
+#define OPENMPT_API_VERSION_PATCH 10
 /*! \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.8.9+release.autotools/libopenmpt/libopenmpt_version.mk 
new/libopenmpt-0.8.10+release.autotools/libopenmpt/libopenmpt_version.mk
--- old/libopenmpt-0.8.9+release.autotools/libopenmpt/libopenmpt_version.mk     
2026-08-19 09:15:55.000000000 +0200
+++ new/libopenmpt-0.8.10+release.autotools/libopenmpt/libopenmpt_version.mk    
2026-10-31 19:27:30.000000000 +0100
@@ -1,8 +1,8 @@
 LIBOPENMPT_VERSION_MAJOR=0
 LIBOPENMPT_VERSION_MINOR=8
-LIBOPENMPT_VERSION_PATCH=9
+LIBOPENMPT_VERSION_PATCH=10
 LIBOPENMPT_VERSION_PREREL=
 
 LIBOPENMPT_LTVER_CURRENT=5
-LIBOPENMPT_LTVER_REVISION=9
+LIBOPENMPT_LTVER_REVISION=10
 LIBOPENMPT_LTVER_AGE=5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libopenmpt-0.8.9+release.autotools/man/openmpt123.1 
new/libopenmpt-0.8.10+release.autotools/man/openmpt123.1
--- old/libopenmpt-0.8.9+release.autotools/man/openmpt123.1     2026-08-19 
11:21:08.000000000 +0200
+++ new/libopenmpt-0.8.10+release.autotools/man/openmpt123.1    2026-10-31 
22:30:59.000000000 +0100
@@ -1,12 +1,12 @@
 .\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.49.3.
-.TH OPENMPT123 "1" "August 2026" "openmpt123 v0.8.9" "User Commands"
+.TH OPENMPT123 "1" "October 2026" "openmpt123 v0.8.10" "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.8.9, libopenmpt 0.8.9+r25652 (OpenMPT 1.32.11.02\-r25652 
https://source.openmpt.org/svn/openmpt/tags/libopenmpt\-0.8.9@25652 
(2026\-08\-19T07:15:57.388610Z) clean)
+openmpt123 v0.8.10, libopenmpt 0.8.10+r25841 (OpenMPT 1.32.12.00 
https://source.openmpt.org/svn/openmpt/tags/libopenmpt\-0.8.10@25841 
(2026\-10\-31T18:27:32.287400Z) clean)
 Copyright \(co 2013\-2026 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.8.9+release.autotools/soundlib/Dlsbank.cpp 
new/libopenmpt-0.8.10+release.autotools/soundlib/Dlsbank.cpp
--- old/libopenmpt-0.8.9+release.autotools/soundlib/Dlsbank.cpp 2024-12-26 
20:11:29.000000000 +0100
+++ new/libopenmpt-0.8.10+release.autotools/soundlib/Dlsbank.cpp        
2026-10-09 15:45:48.000000000 +0200
@@ -1128,7 +1128,7 @@
                                        sampleType = (sampleType & 0xFFFC) | 
0x10;
 
                                dlsSmp.compressed = (sampleType & 0x10);
-                               if(((sampleType & 0x7FCF) <= 4) && (p.dwEnd >= 
p.dwStart + 4))
+                               if(((sampleType & 0x7FCF) <= 8) && (p.dwEnd >= 
p.dwStart + 4))
                                {
                                        m_WaveForms[i] = p.dwStart;
                                        dlsSmp.dwLen = (p.dwEnd - p.dwStart);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libopenmpt-0.8.9+release.autotools/soundlib/Snd_fx.cpp 
new/libopenmpt-0.8.10+release.autotools/soundlib/Snd_fx.cpp
--- old/libopenmpt-0.8.9+release.autotools/soundlib/Snd_fx.cpp  2026-07-12 
16:10:37.000000000 +0200
+++ new/libopenmpt-0.8.10+release.autotools/soundlib/Snd_fx.cpp 2026-10-09 
15:44:14.000000000 +0200
@@ -148,9 +148,13 @@
                                        }
                                        break;
                                case VOLCMD_PORTAUP:
+                                       
if(sndFile.m_playBehaviour[kITDoublePortamentoSlides])
+                                               chn.nOldPortaUp = 
chn.nOldPortaDown = m.vol << 2;
                                        sndFile.PortamentoUp(*state, channel, 
static_cast<ModCommand::PARAM>(m.vol << 2), 
sndFile.m_playBehaviour[kITVolColFinePortamento]);
                                        break;
                                case VOLCMD_PORTADOWN:
+                                       
if(sndFile.m_playBehaviour[kITDoublePortamentoSlides])
+                                               chn.nOldPortaUp = 
chn.nOldPortaDown = m.vol << 2;
                                        sndFile.PortamentoDown(*state, channel, 
static_cast<ModCommand::PARAM>(m.vol << 2), 
sndFile.m_playBehaviour[kITVolColFinePortamento]);
                                        break;
                                default:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libopenmpt-0.8.9+release.autotools/soundlib/WAVTools.cpp 
new/libopenmpt-0.8.10+release.autotools/soundlib/WAVTools.cpp
--- old/libopenmpt-0.8.9+release.autotools/soundlib/WAVTools.cpp        
2026-08-18 23:03:51.000000000 +0200
+++ new/libopenmpt-0.8.10+release.autotools/soundlib/WAVTools.cpp       
2026-10-29 22:44:41.000000000 +0100
@@ -70,7 +70,8 @@
 
        // Read format chunk
        FileReader formatChunk = chunks.GetChunk(RIFFChunk::idfmt_);
-       if(!formatChunk.ReadStruct(formatInfo))
+       if(!formatChunk.ReadStruct(formatInfo)
+               || formatInfo.numChannels == 0)
        {
                return;
        }
@@ -104,11 +105,12 @@
                sampleData = chunks.GetChunk(RIFFChunk::idpcm_);
        }
 
-       // "fact" chunk should contain sample length of compressed samples.
-       sampleLength = chunks.GetChunk(RIFFChunk::idfact).ReadUint32LE();
-
-       if((formatInfo.format == WAVFormatChunk::fmtIMA_ADPCM) && 
(GetBlockAlign() > 0))
+       sampleLength = 0;
+       if((formatInfo.format == WAVFormatChunk::fmtIMA_ADPCM) && 
(GetBlockAlign() >= 4 * formatInfo.numChannels))
        {
+               // "fact" chunk should contain sample length of compressed 
samples.
+               sampleLength = 
chunks.GetChunk(RIFFChunk::idfact).ReadUint32LE();
+
                FileReader::pos_type dataLength = sampleData.GetLength();
                std::size_t blocks = 
mpt::align_up<FileReader::pos_type>(dataLength, GetBlockAlign()) / 
GetBlockAlign();
                std::size_t framesPerBlock = ((GetBlockAlign() - (4 * 
formatInfo.numChannels)) * 2 / formatInfo.numChannels) + 1;
@@ -124,6 +126,7 @@
                                sampleLength *= 2;
                        }
                }
+               LimitMax(sampleLength, expectedLengthFrames);
        }
 
        if((formatInfo.format != WAVFormatChunk::fmtIMA_ADPCM || sampleLength 
== 0) && GetSampleSize() != 0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libopenmpt-0.8.9+release.autotools/src/mpt/arch/feature_fence.hpp 
new/libopenmpt-0.8.10+release.autotools/src/mpt/arch/feature_fence.hpp
--- old/libopenmpt-0.8.9+release.autotools/src/mpt/arch/feature_fence.hpp       
2025-07-18 20:04:08.000000000 +0200
+++ new/libopenmpt-0.8.10+release.autotools/src/mpt/arch/feature_fence.hpp      
2026-10-23 14:38:01.000000000 +0200
@@ -7,6 +7,7 @@
 #include "mpt/base/detect.hpp"
 #include "mpt/base/macros.hpp"
 #include "mpt/base/namespace.hpp"
+#include "mpt/base/utility.hpp"
 
 #include <atomic>
 
@@ -22,11 +23,11 @@
 
 
 MPT_FORCEINLINE void feature_fence_aquire() noexcept {
-       std::atomic_signal_fence(std::memory_order_acquire);
+       mpt::compiler_barrier(std::memory_order_acquire);
 }
 
 MPT_FORCEINLINE void feature_fence_release() noexcept {
-       std::atomic_signal_fence(std::memory_order_release);
+       mpt::compiler_barrier(std::memory_order_release);
 }
 
 class feature_fence_guard {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libopenmpt-0.8.9+release.autotools/src/mpt/base/detect_os.hpp 
new/libopenmpt-0.8.10+release.autotools/src/mpt/base/detect_os.hpp
--- old/libopenmpt-0.8.9+release.autotools/src/mpt/base/detect_os.hpp   
2026-05-13 13:20:21.000000000 +0200
+++ new/libopenmpt-0.8.10+release.autotools/src/mpt/base/detect_os.hpp  
2026-10-03 10:53:10.000000000 +0200
@@ -87,6 +87,7 @@
 //                      MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x10) //        
                25H1                                         Dilithium 25H1     
                    10.0.28000.? NTDDI_WIN11_BR
 #define MPT_WIN_11_25H2 MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x11) // 
NTDDI_WIN11_DT   Win11.25H2 26200      Hudson Valley 2 ?            ?         
25H2    2025 Update          10.0.28000.? NTDDI_WIN11_BR
 #define MPT_WIN_11_26H1 MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x12) // 
NTDDI_WIN11_BR   Win11.26H1 28000      ?               ?            Bromine   
26H2                         10.0.28000.? NTDDI_WIN11_BR
+//      MPT_WIN_11_26H2 MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x11) // 
NTDDI_WIN11_DT   Win11.26H2 26300      ?               ?            ?         
26H2    2026 Update          10.0.28000.? NTDDI_WIN11_BR
 
 // MPT_WIN_API_DESKTOP     : Windows 8/10 Desktop Application (Win32)
 // MPT_WIN_API_UNIVERSAL   : Windows 10 Store App / Universal App
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libopenmpt-0.8.9+release.autotools/src/mpt/base/secure.hpp 
new/libopenmpt-0.8.10+release.autotools/src/mpt/base/secure.hpp
--- old/libopenmpt-0.8.9+release.autotools/src/mpt/base/secure.hpp      
2022-08-31 18:51:32.000000000 +0200
+++ new/libopenmpt-0.8.10+release.autotools/src/mpt/base/secure.hpp     
2026-10-23 14:38:25.000000000 +0200
@@ -8,8 +8,8 @@
 #include "mpt/base/integer.hpp"
 #include "mpt/base/macros.hpp"
 #include "mpt/base/namespace.hpp"
+#include "mpt/base/utility.hpp"
 
-#include <atomic>
 #include <utility>
 #include <vector>
 
@@ -24,13 +24,13 @@
 
 // C23 memset_explicit
 inline MPT_NOINLINE void * memset_explicit(void * const dst, int const value, 
std::size_t const len) noexcept {
-       std::atomic_thread_fence(std::memory_order_seq_cst);
+       mpt::full_barrier();
        volatile unsigned char * volatile p = static_cast<volatile unsigned 
char *>(dst);
-       std::atomic_thread_fence(std::memory_order_seq_cst);
+       mpt::full_barrier();
        for (volatile std::size_t i = 0; i < len; ++i) {
                p[i] = static_cast<unsigned char>(value);
        }
-       std::atomic_thread_fence(std::memory_order_seq_cst);
+       mpt::full_barrier();
        return dst;
 }
 
@@ -41,54 +41,54 @@
 
 
 inline MPT_NOINLINE void memzero(std::byte * const dst, std::size_t const len) 
noexcept {
-       std::atomic_thread_fence(std::memory_order_seq_cst);
+       mpt::full_barrier();
        volatile std::byte * volatile p = static_cast<volatile std::byte 
*>(dst);
-       std::atomic_thread_fence(std::memory_order_seq_cst);
+       mpt::full_barrier();
        for (volatile std::size_t i = 0; i < len; ++i) {
                p[i] = std::byte{0};
        }
-       std::atomic_thread_fence(std::memory_order_seq_cst);
+       mpt::full_barrier();
 }
 
 inline MPT_NOINLINE void memzero(void * const dst, std::size_t const len) 
noexcept {
-       std::atomic_thread_fence(std::memory_order_seq_cst);
+       mpt::full_barrier();
        volatile std::byte * volatile p = static_cast<volatile std::byte 
*>(dst);
-       std::atomic_thread_fence(std::memory_order_seq_cst);
+       mpt::full_barrier();
        for (volatile std::size_t i = 0; i < len; ++i) {
                p[i] = std::byte{0};
        }
-       std::atomic_thread_fence(std::memory_order_seq_cst);
+       mpt::full_barrier();
 }
 
 inline MPT_NOINLINE void memzero(char * const dst, std::size_t const len) 
noexcept {
-       std::atomic_thread_fence(std::memory_order_seq_cst);
+       mpt::full_barrier();
        volatile std::byte * volatile p = reinterpret_cast<volatile std::byte 
*>(dst);
-       std::atomic_thread_fence(std::memory_order_seq_cst);
+       mpt::full_barrier();
        for (volatile std::size_t i = 0; i < len; ++i) {
                p[i] = std::byte{0};
        }
-       std::atomic_thread_fence(std::memory_order_seq_cst);
+       mpt::full_barrier();
 }
 
 inline MPT_NOINLINE void memzero(uint8 * const dst, std::size_t const len) 
noexcept {
-       std::atomic_thread_fence(std::memory_order_seq_cst);
+       mpt::full_barrier();
        volatile std::byte * volatile p = reinterpret_cast<volatile std::byte 
*>(dst);
-       std::atomic_thread_fence(std::memory_order_seq_cst);
+       mpt::full_barrier();
        for (volatile std::size_t i = 0; i < len; ++i) {
                p[i] = std::byte{0};
        }
-       std::atomic_thread_fence(std::memory_order_seq_cst);
+       mpt::full_barrier();
 }
 
 
 
 template <typename T>
 inline MPT_NOINLINE void clear(T & val) {
-       std::atomic_signal_fence(std::memory_order_seq_cst);
+       mpt::full_barrier();
        volatile T * volatile v = &val;
-       std::atomic_thread_fence(std::memory_order_seq_cst);
+       mpt::full_barrier();
        *v = T{};
-       std::atomic_signal_fence(std::memory_order_seq_cst);
+       mpt::full_barrier();
 }
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libopenmpt-0.8.9+release.autotools/src/mpt/base/utility.hpp 
new/libopenmpt-0.8.10+release.autotools/src/mpt/base/utility.hpp
--- old/libopenmpt-0.8.9+release.autotools/src/mpt/base/utility.hpp     
2025-03-12 19:15:00.000000000 +0100
+++ new/libopenmpt-0.8.10+release.autotools/src/mpt/base/utility.hpp    
2026-10-23 14:37:37.000000000 +0200
@@ -13,6 +13,9 @@
 #include "mpt/base/saturate_round.hpp"
 #endif
 
+#if MPT_CXX_BEFORE(26)
+#include <atomic>
+#endif
 #if MPT_CXX_BEFORE(23) && !MPT_COMPILER_MSVC && !MPT_COMPILER_GCC && 
!MPT_COMPILER_CLANG
 #include <exception>
 #endif
@@ -257,6 +260,70 @@
 
 
 
+#if MPT_CXX_AT_LEAST(26)
+
+using std::observable_checkpoint;
+
+#else // !C++26
+
+#if MPT_COMPILER_MSVC
+inline void observable_checkpoint() {
+       _ReadWriteBarrier();
+}
+#elif MPT_COMPILER_GCC || MPT_COMPILER_CLANG
+inline void observable_checkpoint() {
+       // clang-format off
+       __asm__ __volatile__("" ::: "memory");
+       // clang-format on
+}
+#else
+inline void observable_checkpoint() {
+       std::atomic_signal_fence(std::memory_order_release);
+}
+#endif
+
+#endif // C++26
+
+
+
+inline void compiler_barrier(std::memory_order order) {
+#if MPT_COMPILER_CLANG
+       // clang-format off
+       __asm__ __volatile__("" ::: "memory");
+       // clang-format on
+#endif
+       std::atomic_signal_fence(order);
+#if MPT_COMPILER_CLANG
+       // clang-format off
+       __asm__ __volatile__("" ::: "memory");
+       // clang-format on
+#endif
+}
+
+
+
+inline void cpu_barrier(std::memory_order order) {
+       std::atomic_thread_fence(order);
+}
+
+
+
+inline void full_barrier() {
+#if MPT_COMPILER_CLANG
+       // clang-format off
+       __asm__ __volatile__("" ::: "memory");
+       // clang-format on
+       std::atomic_thread_fence(std::memory_order_seq_cst);
+       // clang-format off
+       __asm__ __volatile__("" ::: "memory");
+       // clang-format on
+#else
+       std::atomic_thread_fence(std::memory_order_seq_cst);
+#endif
+}
+
+
+
 } // namespace MPT_INLINE_NS
 } // namespace mpt
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libopenmpt-0.8.9+release.autotools/src/mpt/osinfo/windows_version.hpp 
new/libopenmpt-0.8.10+release.autotools/src/mpt/osinfo/windows_version.hpp
--- old/libopenmpt-0.8.9+release.autotools/src/mpt/osinfo/windows_version.hpp   
2026-05-13 13:24:07.000000000 +0200
+++ new/libopenmpt-0.8.10+release.autotools/src/mpt/osinfo/windows_version.hpp  
2026-10-03 10:54:02.000000000 +0200
@@ -134,6 +134,8 @@
 #if 0
 #elif MPT_WINNT_AT_LEAST(MPT_WIN_11_26H1)
                return 
mpt::osinfo::windows::Version(mpt::osinfo::windows::Version::Win10, 
mpt::osinfo::windows::Version::ServicePack(0, 0), 28000, 0);
+//#elif MPT_WINNT_AT_LEAST(MPT_WIN_11_26H2)
+//             return 
mpt::osinfo::windows::Version(mpt::osinfo::windows::Version::Win10, 
mpt::osinfo::windows::Version::ServicePack(0, 0), 26300, 0);
 #elif MPT_WINNT_AT_LEAST(MPT_WIN_11_25H2)
                return 
mpt::osinfo::windows::Version(mpt::osinfo::windows::Version::Win10, 
mpt::osinfo::windows::Version::ServicePack(0, 0), 26200, 0);
 #elif MPT_WINNT_AT_LEAST(MPT_WIN_11_24H2)

Reply via email to