Hello community,

here is the log from the commit of package fluidsynth for openSUSE:Factory 
checked in at 2020-07-17 20:45:02
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/fluidsynth (Old)
 and      /work/SRC/openSUSE:Factory/.fluidsynth.new.3592 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "fluidsynth"

Fri Jul 17 20:45:02 2020 rev:52 rq:820949 version:2.1.4

Changes:
--------
--- /work/SRC/openSUSE:Factory/fluidsynth/fluidsynth.changes    2020-06-02 
14:33:30.770548281 +0200
+++ /work/SRC/openSUSE:Factory/.fluidsynth.new.3592/fluidsynth.changes  
2020-07-17 20:45:30.484581940 +0200
@@ -1,0 +2,11 @@
+Mon Jul 13 16:03:45 UTC 2020 - Tom Mbrt <tom.m...@googlemail.com>
+
+- Update to version 2.1.4
+  * fix an uninitialized memory access possibly triggering an FPE
+    trap
+  * fix several regressions introduced in 2.1.3:
+    * `fluid_synth_start()` failed for certain presets
+    * fix a NULL dereference in jack driver
+    * fix a stack-based overflow when creating the synth
+
+-------------------------------------------------------------------

Old:
----
  fluidsynth-2.1.3.tar.gz

New:
----
  fluidsynth-2.1.4.tar.gz

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

Other differences:
------------------
++++++ fluidsynth.spec ++++++
--- /var/tmp/diff_new_pack.qLOqup/_old  2020-07-17 20:45:32.348583926 +0200
+++ /var/tmp/diff_new_pack.qLOqup/_new  2020-07-17 20:45:32.352583930 +0200
@@ -25,7 +25,7 @@
 
 %define sover   2
 Name:           fluidsynth
-Version:        2.1.3
+Version:        2.1.4
 Release:        0
 Summary:        A Real-Time Software Synthesizer That Uses Soundfont(tm)
 License:        LGPL-2.1-or-later

++++++ fluidsynth-2.1.3.tar.gz -> fluidsynth-2.1.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.1.3/.travis.yml 
new/fluidsynth-2.1.4/.travis.yml
--- old/fluidsynth-2.1.3/.travis.yml    2020-05-23 15:31:48.000000000 +0200
+++ new/fluidsynth-2.1.4/.travis.yml    2020-07-12 12:55:32.000000000 +0200
@@ -25,7 +25,7 @@
 env:
     - CMAKE_FLAGS="-Denable-profiling=1"
     - CMAKE_FLAGS="-Denable-floats=1 -Denable-profiling=1"
-    - CMAKE_FLAGS="-Denable-floats=0"
+    - CMAKE_FLAGS="-Denable-floats=1"
     - CMAKE_FLAGS="-Denable-trap-on-fpe=1"
     - CMAKE_FLAGS="-Denable-fpe-check=1"
     - CMAKE_FLAGS="-Denable-ipv6=0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.1.3/CMakeLists.txt 
new/fluidsynth-2.1.4/CMakeLists.txt
--- old/fluidsynth-2.1.3/CMakeLists.txt 2020-05-23 15:31:48.000000000 +0200
+++ new/fluidsynth-2.1.4/CMakeLists.txt 2020-07-12 12:55:32.000000000 +0200
@@ -29,7 +29,7 @@
 # FluidSynth package version
 set ( FLUIDSYNTH_VERSION_MAJOR 2 )
 set ( FLUIDSYNTH_VERSION_MINOR 1 )
-set ( FLUIDSYNTH_VERSION_MICRO 3 )
+set ( FLUIDSYNTH_VERSION_MICRO 4 )
 set ( VERSION 
"${FLUIDSYNTH_VERSION_MAJOR}.${FLUIDSYNTH_VERSION_MINOR}.${FLUIDSYNTH_VERSION_MICRO}"
 )
 set ( FLUIDSYNTH_VERSION "\"${VERSION}\"" )
 
@@ -44,7 +44,7 @@
 # This is not exactly the same algorithm as the libtool one, but the results 
are the same.
 set ( LIB_VERSION_CURRENT 2 )
 set ( LIB_VERSION_AGE 3 )
-set ( LIB_VERSION_REVISION 3 )
+set ( LIB_VERSION_REVISION 4 )
 set ( LIB_VERSION_INFO
       "${LIB_VERSION_CURRENT}.${LIB_VERSION_AGE}.${LIB_VERSION_REVISION}" )
 
@@ -184,7 +184,7 @@
   endif ( NOT APPLE AND NOT OS2 )
 
   # define some warning flags
-  set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -W -Wpointer-arith -Wcast-qual 
-Wstrict-prototypes -Wno-unused-parameter -Wdeclaration-after-statement 
-Werror=implicit-function-declaration" )
+  set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -W -Wpointer-arith -Wcast-qual 
-Wstrict-prototypes -Wno-unused-parameter -Wdeclaration-after-statement 
-Werror=implicit-function-declaration -Werror=incompatible-pointer-types" )
 
   # prepend to build type specific flags, to allow users to override
   set ( CMAKE_C_FLAGS_DEBUG "-g ${CMAKE_C_FLAGS_DEBUG}" )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.1.3/doc/Doxyfile 
new/fluidsynth-2.1.4/doc/Doxyfile
--- old/fluidsynth-2.1.3/doc/Doxyfile   2020-05-23 15:31:48.000000000 +0200
+++ new/fluidsynth-2.1.4/doc/Doxyfile   2020-07-12 12:55:32.000000000 +0200
@@ -5,7 +5,7 @@
 #---------------------------------------------------------------------------
 DOXYFILE_ENCODING = UTF-8
 PROJECT_NAME = libfluidsynth
-PROJECT_NUMBER = 2.1.3
+PROJECT_NUMBER = 2.1.4
 OUTPUT_DIRECTORY = api
 CREATE_SUBDIRS = NO
 OUTPUT_LANGUAGE = English
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.1.3/doc/fluidsynth-v20-devdoc.txt 
new/fluidsynth-2.1.4/doc/fluidsynth-v20-devdoc.txt
--- old/fluidsynth-2.1.3/doc/fluidsynth-v20-devdoc.txt  2020-05-23 
15:31:48.000000000 +0200
+++ new/fluidsynth-2.1.4/doc/fluidsynth-v20-devdoc.txt  2020-07-12 
12:55:32.000000000 +0200
@@ -8,8 +8,8 @@
 \author David Henningsson
 \author Tom Moebert
 \author Copyright &copy; 2003-2020 Peter Hanappe, Conrad Berhörster, Antoine 
Schmitt, Pedro López-Cabanillas, Josh Green, David Henningsson, Tom Moebert
-\version Revision 2.1.3
-\date 2020-05-23
+\version Revision 2.1.4
+\date 2020-07-05
 
 All the source code examples in this document are in the public domain; you 
can use them as you please. This document is licensed under the Creative 
Commons Attribution-Share Alike 3.0 Unported License. To view a copy of this 
license, visit http://creativecommons.org/licenses/by-sa/3.0/ . The FluidSynth 
library is distributed under the GNU Lesser General Public License. A copy of 
the GNU Lesser General Public License is contained in the FluidSynth package; 
if not, visit http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt or write to 
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 
02110-1301 USA.
 
@@ -21,6 +21,7 @@
 
 - \ref Disclaimer
 - \ref Introduction
+- \ref NewIn2_1_4
 - \ref NewIn2_1_1
 - \ref NewIn2_1_0
 - \ref NewIn2_0_8
@@ -69,6 +70,11 @@
 
 - FluidSynth is open source, in active development. For more details, take a 
look at http://www.fluidsynth.org
 
+
+\section NewIn2_1_4 What's new in 2.1.4?
+
+- a regression introduced in 2.1.3 broke fluid_synth_start() for DLS presets
+
 \section NewIn2_1_1 What's new in 2.1.1?
 
 - requirements for explicit sequencer client unregistering have been relaxed: 
delete_fluid_sequencer() now correctly frees any registered sequencer clients 
(clients can still be explicitly unregistered)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.1.3/src/drivers/fluid_jack.c 
new/fluidsynth-2.1.4/src/drivers/fluid_jack.c
--- old/fluidsynth-2.1.3/src/drivers/fluid_jack.c       2020-05-23 
15:31:48.000000000 +0200
+++ new/fluidsynth-2.1.4/src/drivers/fluid_jack.c       2020-07-12 
12:55:32.000000000 +0200
@@ -83,7 +83,7 @@
     jack_port_t **midi_port; // array of midi port handles
     fluid_midi_parser_t *parser;
     int autoconnect_inputs;
-    int autoconnect_is_outdated;
+    fluid_atomic_int_t autoconnect_is_outdated;
 };
 
 static fluid_jack_client_t *new_fluid_jack_client(fluid_settings_t *settings,
@@ -136,7 +136,7 @@
         jack_free(midi_source_ports);
     }
 
-    midi_driver->autoconnect_is_outdated = FALSE;
+    fluid_atomic_int_set(&midi_driver->autoconnect_is_outdated, FALSE);
 }
 
 /*
@@ -188,7 +188,8 @@
         else
         {
             // do not free client_ref and do not goto error_recovery
-            // client_ref is being used by another audio or midi driver. 
Freeing it here will create a double free.
+            // client_ref is being used by another audio or midi driver. 
Freeing it here will lead to a double free.
+            client_ref = NULL;
         }
 
         fluid_mutex_unlock(last_client_mutex);        /* -- unlock last_client 
*/
@@ -357,7 +358,7 @@
 
             if(dev->midi_port[i] == NULL)
             {
-                FLUID_LOG(FLUID_ERR, "Failed to create Jack MIDI port");
+                FLUID_LOG(FLUID_ERR, "Failed to create Jack MIDI port '%s'", 
name);
                 FLUID_FREE(dev->midi_port);
                 dev->midi_port = NULL;
                 return FLUID_FAILED;
@@ -397,7 +398,8 @@
 
         if(dev->output_ports[0] == NULL || dev->output_ports[1] == NULL)
         {
-            FLUID_LOG(FLUID_ERR, "Failed to create Jack audio port");
+            FLUID_LOG(FLUID_ERR, "Failed to create Jack audio port '%s'",
+                      (dev->output_ports[0] == NULL ? (dev->output_ports[1] == 
NULL ? "left & right" : "left") : "right"));
             goto error_recovery;
         }
     }
@@ -706,7 +708,7 @@
 
     if(midi_driver)
     {
-        if(midi_driver->autoconnect_is_outdated)
+        if(fluid_atomic_int_get(&midi_driver->autoconnect_is_outdated))
         {
             fluid_jack_midi_autoconnect(client->client, midi_driver);
         }
@@ -818,7 +820,7 @@
 
     if(client_ref->midi_driver != NULL)
     {
-        client_ref->midi_driver->autoconnect_is_outdated = 
client_ref->midi_driver->autoconnect_inputs && is_registering != 0;
+        
fluid_atomic_int_set(&client_ref->midi_driver->autoconnect_is_outdated, 
client_ref->midi_driver->autoconnect_inputs && is_registering != 0);
     }
 }
 
@@ -863,13 +865,12 @@
     }
 
     fluid_settings_getint(settings, "midi.autoconnect", 
&dev->autoconnect_inputs);
-    dev->autoconnect_is_outdated = dev->autoconnect_inputs;
+    fluid_atomic_int_set(&dev->autoconnect_is_outdated, 
dev->autoconnect_inputs);
 
     dev->client_ref = new_fluid_jack_client(settings, FALSE, dev);
 
     if(!dev->client_ref)
     {
-        FLUID_LOG(FLUID_PANIC, "Out of memory");
         goto error_recovery;
     }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.1.3/src/drivers/fluid_opensles.c 
new/fluidsynth-2.1.4/src/drivers/fluid_opensles.c
--- old/fluidsynth-2.1.3/src/drivers/fluid_opensles.c   2020-05-23 
15:31:48.000000000 +0200
+++ new/fluidsynth-2.1.4/src/drivers/fluid_opensles.c   2020-07-12 
12:55:32.000000000 +0200
@@ -109,7 +109,7 @@
 
     if(!dev->engine)
     {
-        FLUID_LOG(FLUID_ERR, "Failed to create the OpenSL ES engine, error 
code 0x%lx", result);
+        FLUID_LOG(FLUID_ERR, "Failed to create the OpenSL ES engine, error 
code 0x%lx", (unsigned long)result);
         goto error_recovery;
     }
 
@@ -117,7 +117,7 @@
 
     if(result != SL_RESULT_SUCCESS)
     {
-        FLUID_LOG(FLUID_ERR, "Failed to realize the OpenSL ES engine, error 
code 0x%lx", result);
+        FLUID_LOG(FLUID_ERR, "Failed to realize the OpenSL ES engine, error 
code 0x%lx", (unsigned long)result);
         goto error_recovery;
     }
 
@@ -125,7 +125,7 @@
 
     if(result != SL_RESULT_SUCCESS)
     {
-        FLUID_LOG(FLUID_ERR, "Failed to retrieve the OpenSL ES engine 
interface, error code 0x%lx", result);
+        FLUID_LOG(FLUID_ERR, "Failed to retrieve the OpenSL ES engine 
interface, error code 0x%lx", (unsigned long)result);
         goto error_recovery;
     }
 
@@ -133,7 +133,7 @@
 
     if(result != SL_RESULT_SUCCESS)
     {
-        FLUID_LOG(FLUID_ERR, "Failed to create the OpenSL ES output mix 
object, error code 0x%lx", result);
+        FLUID_LOG(FLUID_ERR, "Failed to create the OpenSL ES output mix 
object, error code 0x%lx", (unsigned long)result);
         goto error_recovery;
     }
 
@@ -141,7 +141,7 @@
 
     if(result != SL_RESULT_SUCCESS)
     {
-        FLUID_LOG(FLUID_ERR, "Failed to realize the OpenSL ES output mix 
object, error code 0x%lx", result);
+        FLUID_LOG(FLUID_ERR, "Failed to realize the OpenSL ES output mix 
object, error code 0x%lx", (unsigned long)result);
         goto error_recovery;
     }
 
@@ -183,7 +183,7 @@
 
     if(result != SL_RESULT_SUCCESS)
     {
-        FLUID_LOG(FLUID_ERR, "Failed to create the OpenSL ES audio player 
object, error code 0x%lx", result);
+        FLUID_LOG(FLUID_ERR, "Failed to create the OpenSL ES audio player 
object, error code 0x%lx", (unsigned long)result);
         goto error_recovery;
     }
 
@@ -191,7 +191,7 @@
 
     if(result != SL_RESULT_SUCCESS)
     {
-        FLUID_LOG(FLUID_ERR, "Failed to realize the OpenSL ES audio player 
object, error code 0x%lx", result);
+        FLUID_LOG(FLUID_ERR, "Failed to realize the OpenSL ES audio player 
object, error code 0x%lx", (unsigned long)result);
         goto error_recovery;
     }
 
@@ -200,7 +200,7 @@
 
     if(result != SL_RESULT_SUCCESS)
     {
-        FLUID_LOG(FLUID_ERR, "Failed to retrieve the OpenSL ES audio player 
interface, error code 0x%lx", result);
+        FLUID_LOG(FLUID_ERR, "Failed to retrieve the OpenSL ES audio player 
interface, error code 0x%lx", (unsigned long)result);
         goto error_recovery;
     }
 
@@ -209,7 +209,7 @@
 
     if(result != SL_RESULT_SUCCESS)
     {
-        FLUID_LOG(FLUID_ERR, "Failed to retrieve the OpenSL ES buffer queue 
interface, error code 0x%lx", result);
+        FLUID_LOG(FLUID_ERR, "Failed to retrieve the OpenSL ES buffer queue 
interface, error code 0x%lx", (unsigned long)result);
         goto error_recovery;
     }
 
@@ -232,7 +232,7 @@
 
     if(result != SL_RESULT_SUCCESS)
     {
-        FLUID_LOG(FLUID_ERR, "Failed to register the opensles_callback, error 
code 0x%lx", result);
+        FLUID_LOG(FLUID_ERR, "Failed to register the opensles_callback, error 
code 0x%lx", (unsigned long)result);
         goto error_recovery;
     }
 
@@ -247,7 +247,7 @@
 
     if(result != SL_RESULT_SUCCESS)
     {
-        FLUID_LOG(FLUID_ERR, "Failed to add a buffer to the queue, error code 
0x%lx", result);
+        FLUID_LOG(FLUID_ERR, "Failed to add a buffer to the queue, error code 
0x%lx", (unsigned long)result);
         goto error_recovery;
     }
 
@@ -255,7 +255,7 @@
 
     if(result != SL_RESULT_SUCCESS)
     {
-        FLUID_LOG(FLUID_ERR, "Failed to set OpenSL ES audio player callback 
events, error code 0x%lx", result);
+        FLUID_LOG(FLUID_ERR, "Failed to set OpenSL ES audio player callback 
events, error code 0x%lx", (unsigned long)result);
         goto error_recovery;
     }
 
@@ -263,7 +263,7 @@
 
     if(result != SL_RESULT_SUCCESS)
     {
-        FLUID_LOG(FLUID_ERR, "Failed to set OpenSL ES audio player play state 
to playing, error code 0x%lx", result);
+        FLUID_LOG(FLUID_ERR, "Failed to set OpenSL ES audio player play state 
to playing, error code 0x%lx", (unsigned long)result);
         goto error_recovery;
     }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.1.3/src/midi/fluid_midi.c 
new/fluidsynth-2.1.4/src/midi/fluid_midi.c
--- old/fluidsynth-2.1.3/src/midi/fluid_midi.c  2020-05-23 15:31:48.000000000 
+0200
+++ new/fluidsynth-2.1.4/src/midi/fluid_midi.c  2020-07-12 12:55:32.000000000 
+0200
@@ -174,7 +174,7 @@
         return NULL;
     }
 
-    FLUID_LOG(FLUID_DBG, "File load: Allocating %lu bytes", buflen);
+    FLUID_LOG(FLUID_DBG, "File load: Allocating %lu bytes", (unsigned 
long)buflen);
     buffer = FLUID_MALLOC(buflen);
 
     if(buffer == NULL)
@@ -187,8 +187,8 @@
 
     if(n != buflen)
     {
-        FLUID_LOG(FLUID_ERR, "Only read %lu bytes; expected %lu", n,
-                  buflen);
+        FLUID_LOG(FLUID_ERR, "Only read %lu bytes; expected %lu", (unsigned 
long)n,
+                  (unsigned long)buflen);
         FLUID_FREE(buffer);
         return NULL;
     };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.1.3/src/synth/fluid_synth.c 
new/fluidsynth-2.1.4/src/synth/fluid_synth.c
--- old/fluidsynth-2.1.3/src/synth/fluid_synth.c        2020-05-23 
15:31:48.000000000 +0200
+++ new/fluidsynth-2.1.4/src/synth/fluid_synth.c        2020-07-12 
12:55:32.000000000 +0200
@@ -609,7 +609,7 @@
     char *important_channels;
     int i, nbuf, prio_level = 0;
     int with_ladspa = 0;
-    fluid_real_t sample_rate_min, sample_rate_max;
+    double sample_rate_min, sample_rate_max;
 
     /* initialize all the conversion tables and other stuff */
     if(fluid_atomic_int_compare_and_exchange(&fluid_synth_initialized, 0, 1))
@@ -789,7 +789,7 @@
     /* In an overflow situation, a new voice takes about 50 spaces in the 
queue! */
     synth->eventhandler = new_fluid_rvoice_eventhandler(synth->polyphony * 64,
                           synth->polyphony, nbuf, synth->effects_channels, 
synth->effects_groups,
-                          sample_rate_max, synth->sample_rate,
+                          (fluid_real_t)sample_rate_max, synth->sample_rate,
                           synth->cores - 1, prio_level);
 
     if(synth->eventhandler == NULL)
@@ -4527,14 +4527,13 @@
     for(i = 0; i < synth->polyphony; i++)
     {
         fluid_voice_t *existing_voice = synth->voice[i];
-        int existing_excl_class = fluid_voice_gen_value(existing_voice, 
GEN_EXCLUSIVECLASS);
 
         /* If voice is playing, on the same channel, has same exclusive
          * class and is not part of the same noteon event (voice group), then 
kill it */
 
         if(fluid_voice_is_playing(existing_voice)
                 && fluid_voice_get_channel(existing_voice) == 
fluid_voice_get_channel(new_voice)
-                && existing_excl_class == excl_class
+                && fluid_voice_gen_value(existing_voice, GEN_EXCLUSIVECLASS) 
== excl_class
                 && fluid_voice_get_id(existing_voice) != 
fluid_voice_get_id(new_voice))
         {
             fluid_voice_kill_excl(existing_voice);
@@ -6344,15 +6343,14 @@
 fluid_synth_start(fluid_synth_t *synth, unsigned int id, fluid_preset_t 
*preset,
                   int audio_chan, int chan, int key, int vel)
 {
-    int result;
-    fluid_defsfont_t *defsfont;
+    int result, dynamic_samples;
     fluid_return_val_if_fail(preset != NULL, FLUID_FAILED);
     fluid_return_val_if_fail(key >= 0 && key <= 127, FLUID_FAILED);
     fluid_return_val_if_fail(vel >= 1 && vel <= 127, FLUID_FAILED);
     FLUID_API_ENTRY_CHAN(FLUID_FAILED);
 
-    defsfont = fluid_sfont_get_data(preset->sfont);
-    if(defsfont->dynamic_samples)
+    fluid_settings_getint(fluid_synth_get_settings(synth), 
"synth.dynamic-sample-loading", &dynamic_samples);
+    if(dynamic_samples)
     {
         // The preset might not be currently used, thus its sample data may 
not be loaded.
         // This guard is to avoid a NULL deref in rvoice_write().


Reply via email to