Hello community, here is the log from the commit of package fluidsynth for openSUSE:Factory checked in at 2020-04-19 21:35:11 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/fluidsynth (Old) and /work/SRC/openSUSE:Factory/.fluidsynth.new.2738 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "fluidsynth" Sun Apr 19 21:35:11 2020 rev:50 rq:793920 version:2.1.2 Changes: -------- --- /work/SRC/openSUSE:Factory/fluidsynth/fluidsynth.changes 2020-02-29 21:20:25.914031739 +0100 +++ /work/SRC/openSUSE:Factory/.fluidsynth.new.2738/fluidsynth.changes 2020-04-19 21:35:14.290364013 +0200 @@ -1,0 +2,10 @@ +Mon Apr 13 16:42:51 UTC 2020 - Tom Mbrt <[email protected]> + +- Update to version 2.1.2 + * fluidsynth now exits with error when user-provided command-line + arguments are out-of-range + * add verbose error logging to opensles and oboe drivers + * fix a memory leak in oboe driver + * fix a NULL dereference in the fluidsynth commandline program + +------------------------------------------------------------------- Old: ---- fluidsynth-2.1.1.tar.gz New: ---- fluidsynth-2.1.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ fluidsynth.spec ++++++ --- /var/tmp/diff_new_pack.PylTo8/_old 2020-04-19 21:35:15.014365506 +0200 +++ /var/tmp/diff_new_pack.PylTo8/_new 2020-04-19 21:35:15.014365506 +0200 @@ -25,7 +25,7 @@ %define sover 2 Name: fluidsynth -Version: 2.1.1 +Version: 2.1.2 Release: 0 Summary: A Real-Time Software Synthesizer That Uses Soundfont(tm) License: LGPL-2.1-or-later ++++++ fluidsynth-2.1.1.tar.gz -> fluidsynth-2.1.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fluidsynth-2.1.1/.azure-pipelines-mac.yml new/fluidsynth-2.1.2/.azure-pipelines-mac.yml --- old/fluidsynth-2.1.1/.azure-pipelines-mac.yml 2020-02-16 19:55:28.000000000 +0100 +++ new/fluidsynth-2.1.2/.azure-pipelines-mac.yml 2020-04-06 10:40:37.000000000 +0200 @@ -7,9 +7,11 @@ - job: macOS pool: vmImage: 'macOS-10.14' +# recommended by https://github.com/Homebrew/brew/issues/2491#issuecomment-294207661 steps: - script: | - brew update + brew update || brew update + brew upgrade brew install glib gobject-introspection libsndfile pkg-config jack dbus-glib pulseaudio portaudio sdl2 displayName: 'Prerequisites' - script: | diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fluidsynth-2.1.1/.cirrus.yml new/fluidsynth-2.1.2/.cirrus.yml --- old/fluidsynth-2.1.1/.cirrus.yml 2020-02-16 19:55:28.000000000 +0100 +++ new/fluidsynth-2.1.2/.cirrus.yml 2020-04-06 10:40:37.000000000 +0200 @@ -7,7 +7,7 @@ image_family: freebsd-13-0-snap image_family: freebsd-12-0 - install_script: pwd && ls -la && pkg install -y cmake glib alsa-lib ladspa portaudio pulseaudio pkgconf sdl2 + install_script: pwd && ls -la && pkg update --force && pkg install -y cmake glib alsa-lib ladspa portaudio pulseaudio pkgconf sdl2 compile_script: pwd && ls -la && mkdir $HOME/fluidsynth_install/ && mkdir build && cd build && cmake -Werror=dev -DCMAKE_INSTALL_PREFIX=$HOME/fluidsynth_install -Denable-portaudio=1 -Denable-ladspa=1 -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_VERBOSE_MAKEFILE=0 -DNO_GUI=1 .. && make -j4 && make check && make install diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fluidsynth-2.1.1/CMakeLists.txt new/fluidsynth-2.1.2/CMakeLists.txt --- old/fluidsynth-2.1.1/CMakeLists.txt 2020-02-16 19:55:28.000000000 +0100 +++ new/fluidsynth-2.1.2/CMakeLists.txt 2020-04-06 10:40:37.000000000 +0200 @@ -29,7 +29,7 @@ # FluidSynth package version set ( FLUIDSYNTH_VERSION_MAJOR 2 ) set ( FLUIDSYNTH_VERSION_MINOR 1 ) -set ( FLUIDSYNTH_VERSION_MICRO 1 ) +set ( FLUIDSYNTH_VERSION_MICRO 2 ) 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 1 ) +set ( LIB_VERSION_REVISION 2 ) set ( LIB_VERSION_INFO "${LIB_VERSION_CURRENT}.${LIB_VERSION_AGE}.${LIB_VERSION_REVISION}" ) @@ -583,7 +583,7 @@ if ( enable-readline ) pkg_check_modules ( READLINE readline ) if ( NOT READLINE_FOUND ) - find_package ( Readline ) + find_package ( READLINE ) set ( READLINE_FOUND ${HAVE_READLINE} ) endif ( NOT READLINE_FOUND ) if ( READLINE_FOUND ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fluidsynth-2.1.1/cmake_admin/FindREADLINE.cmake new/fluidsynth-2.1.2/cmake_admin/FindREADLINE.cmake --- old/fluidsynth-2.1.1/cmake_admin/FindREADLINE.cmake 1970-01-01 01:00:00.000000000 +0100 +++ new/fluidsynth-2.1.2/cmake_admin/FindREADLINE.cmake 2020-04-06 10:40:37.000000000 +0200 @@ -0,0 +1,22 @@ +# Try to find the READLINE library +# HAVE_READLINE - system has READLINE +# READLINE_INCLUDE_DIR - READLINE include directory +# READLINE_LIBRARIES - Libraries needed to use READLINE + +if ( READLINE_INCLUDE_DIR AND READLINE_LIBRARIES ) + set ( READLINE_FIND_QUIETLY TRUE ) +endif ( READLINE_INCLUDE_DIR AND READLINE_LIBRARIES ) + +find_path ( READLINE_INCLUDE_DIR NAMES history.h readline/history.h ) +find_library ( READLINE_LIBRARIES NAMES readline ) + +if ( READLINE_INCLUDE_DIR AND READLINE_LIBRARIES ) + set ( HAVE_READLINE TRUE CACHE BOOL "Found readline header and lib" FORCE ) +endif ( READLINE_INCLUDE_DIR AND READLINE_LIBRARIES ) + +include ( FindPackageHandleStandardArgs ) +FIND_PACKAGE_HANDLE_STANDARD_ARGS( READLINE DEFAULT_MSG + READLINE_INCLUDE_DIR + READLINE_LIBRARIES ) + +mark_as_advanced( READLINE_INCLUDE_DIR READLINE_LIBRARIES HAVE_READLINE ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fluidsynth-2.1.1/cmake_admin/FindReadline.cmake new/fluidsynth-2.1.2/cmake_admin/FindReadline.cmake --- old/fluidsynth-2.1.1/cmake_admin/FindReadline.cmake 2020-02-16 19:55:28.000000000 +0100 +++ new/fluidsynth-2.1.2/cmake_admin/FindReadline.cmake 1970-01-01 01:00:00.000000000 +0100 @@ -1,22 +0,0 @@ -# Try to find the READLINE library -# HAVE_READLINE - system has READLINE -# READLINE_INCLUDE_DIR - READLINE include directory -# READLINE_LIBRARIES - Libraries needed to use READLINE - -if ( READLINE_INCLUDE_DIR AND READLINE_LIBRARIES ) - set ( READLINE_FIND_QUIETLY TRUE ) -endif ( READLINE_INCLUDE_DIR AND READLINE_LIBRARIES ) - -find_path ( READLINE_INCLUDE_DIR NAMES history.h readline/history.h ) -find_library ( READLINE_LIBRARIES NAMES readline ) - -if ( READLINE_INCLUDE_DIR AND READLINE_LIBRARIES ) - set ( HAVE_READLINE TRUE CACHE BOOL "Found readline header and lib" FORCE ) -endif ( READLINE_INCLUDE_DIR AND READLINE_LIBRARIES ) - -include ( FindPackageHandleStandardArgs ) -FIND_PACKAGE_HANDLE_STANDARD_ARGS( READLINE DEFAULT_MSG - READLINE_INCLUDE_DIR - READLINE_LIBRARIES ) - -mark_as_advanced( READLINE_INCLUDE_DIR READLINE_LIBRARIES HAVE_READLINE ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fluidsynth-2.1.1/doc/Doxyfile new/fluidsynth-2.1.2/doc/Doxyfile --- old/fluidsynth-2.1.1/doc/Doxyfile 2020-02-16 19:55:28.000000000 +0100 +++ new/fluidsynth-2.1.2/doc/Doxyfile 2020-04-06 10:40:37.000000000 +0200 @@ -5,7 +5,7 @@ #--------------------------------------------------------------------------- DOXYFILE_ENCODING = UTF-8 PROJECT_NAME = libfluidsynth -PROJECT_NUMBER = 2.1.1 +PROJECT_NUMBER = 2.1.2 OUTPUT_DIRECTORY = api CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fluidsynth-2.1.1/doc/fluidsettings.xml new/fluidsynth-2.1.2/doc/fluidsettings.xml --- old/fluidsynth-2.1.1/doc/fluidsettings.xml 2020-02-16 19:55:28.000000000 +0100 +++ new/fluidsynth-2.1.2/doc/fluidsettings.xml 2020-04-06 10:40:37.000000000 +0200 @@ -354,8 +354,7 @@ </desc> </setting> </synth> - - + <audio> <setting> <isFirst>Audio driver settings</isFirst> @@ -367,7 +366,7 @@ coreaudio (Mac OS X),<br /> dart (OS/2) </def> - <vals>alsa, coreaudio, dart, dsound, file, jack, oss, portaudio, pulseaudio, sdl2, sndman, waveout</vals> + <vals>alsa, coreaudio, dart, dsound, file, jack, oboe, opensles, oss, portaudio, pulseaudio, sdl2, sndman, waveout</vals> <desc> The audio system to be used. In order to use sdl2 as audio driver, the application is responsible for initializing SDL's audio subsystem.<br /><br /><strong>Note:</strong> sdl2 and waveout are available since fluidsynth 2.1. </desc> @@ -642,13 +641,13 @@ <name>alsa.device</name> <type>str</type> <def>default</def> - <desc>ALSA MIDI device to use for RAW ALSA MIDI driver.</desc> + <desc>ALSA MIDI hardware device to use for RAW ALSA MIDI driver (not to be confused with the MIDI port).</desc> </setting> <setting> <name>alsa_seq.device</name> <type>str</type> <def>default</def> - <desc>ALSA sequencer device to use for ALSA sequencer driver.</desc> + <desc>ALSA sequencer hardware device to use for ALSA sequencer driver (not to be confused with the MIDI port).</desc> </setting> <setting> <name>alsa_seq.id</name> @@ -678,13 +677,13 @@ <name>oss.device</name> <type>str</type> <def>/dev/midi</def> - <desc>Device to use for OSS MIDI driver.</desc> + <desc>The hardware device to use for OSS MIDI driver (not to be confused with the MIDI port).</desc> </setting> <setting> <name>winmidi.device</name> <type>str</type> <def>default</def> - <desc>Device for Windows MIDI driver.</desc> + <desc>The hardware device to use for Windows MIDI driver (not to be confused with the MIDI port).</desc> </setting> </midi> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fluidsynth-2.1.1/doc/fluidsynth-v20-devdoc.txt new/fluidsynth-2.1.2/doc/fluidsynth-v20-devdoc.txt --- old/fluidsynth-2.1.1/doc/fluidsynth-v20-devdoc.txt 2020-02-16 19:55:28.000000000 +0100 +++ new/fluidsynth-2.1.2/doc/fluidsynth-v20-devdoc.txt 2020-04-06 10:40:37.000000000 +0200 @@ -8,8 +8,8 @@ \author David Henningsson \author Tom Moebert \author Copyright © 2003-2020 Peter Hanappe, Conrad Berhörster, Antoine Schmitt, Pedro López-Cabanillas, Josh Green, David Henningsson, Tom Moebert -\version Revision 2.1.1 -\date 2020-02-16 +\version Revision 2.1.2 +\date 2020-04-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. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fluidsynth-2.1.1/src/drivers/fluid_adriver.c new/fluidsynth-2.1.2/src/drivers/fluid_adriver.c --- old/fluidsynth-2.1.1/src/drivers/fluid_adriver.c 2020-02-16 19:55:28.000000000 +0100 +++ new/fluidsynth-2.1.2/src/drivers/fluid_adriver.c 2020-04-06 10:40:37.000000000 +0200 @@ -213,7 +213,7 @@ fluid_settings_register_int(settings, "audio.realtime-prio", FLUID_DEFAULT_AUDIO_RT_PRIO, 0, 99, 0); - + fluid_settings_register_str(settings, "audio.driver", "", 0); for(i = 0; i < FLUID_N_ELEMENTS(fluid_audio_drivers) - 1; i++) @@ -223,7 +223,7 @@ { def_name = fluid_audio_drivers[i].name; } - + /* Add the driver to the list of options */ fluid_settings_add_option(settings, "audio.driver", fluid_audio_drivers[i].name); @@ -265,7 +265,7 @@ fluid_settings_dupstr(settings, "audio.driver", &name); /* ++ alloc name */ FLUID_LOG(FLUID_ERR, "Couldn't find the requested audio driver '%s'.", name ? name : "NULL"); - + allnames = fluid_settings_option_concat(settings, "audio.driver", NULL); if(allnames != NULL) { @@ -280,9 +280,9 @@ FLUID_FREE(allnames); } - + FLUID_FREE(name); - + return NULL; } @@ -291,7 +291,7 @@ * @param settings Configuration settings used to select and create the audio * driver. * @param synth Synthesizer instance for which the audio driver is created for. - * @return The new audio driver instance. + * @return The new audio driver instance or NULL on error * * Creates a new audio driver for a given \p synth instance with a defined set * of configuration \p settings. The \p settings instance must be the same that @@ -329,8 +329,8 @@ * @param settings Configuration settings used to select and create the audio * driver. * @param func Function called to fill audio buffers for audio playback - * @param data User defined data pointer to pass to 'func' - * @return The new audio driver instance. + * @param data User defined data pointer to pass to \p func + * @return The new audio driver instance or NULL on error * * Like new_fluid_audio_driver() but allows for custom audio processing before * audio is sent to audio driver. It is the responsibility of the callback diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fluidsynth-2.1.1/src/drivers/fluid_oboe.cpp new/fluidsynth-2.1.2/src/drivers/fluid_oboe.cpp --- old/fluidsynth-2.1.1/src/drivers/fluid_oboe.cpp 2020-02-16 19:55:28.000000000 +0100 +++ new/fluidsynth-2.1.2/src/drivers/fluid_oboe.cpp 2020-04-06 10:40:37.000000000 +0200 @@ -126,7 +126,6 @@ try { - dev = FLUID_NEW(fluid_oboe_audio_driver_t); if(dev == NULL) @@ -171,21 +170,25 @@ ->setCallback(dev->oboe_callback); result = builder->openStream(&stream); - dev->stream = stream; - if(result != Result::OK) { + FLUID_LOG(FLUID_ERR, "Unable to open Oboe audio stream"); goto error_recovery; } + dev->stream = stream; dev->cont = 1; FLUID_LOG(FLUID_INFO, "Using Oboe driver"); - stream->start(); + result = stream->start(); + if(result != Result::OK) + { + FLUID_LOG(FLUID_ERR, "Unable to start Oboe audio stream"); + goto error_recovery; + } return reinterpret_cast<fluid_audio_driver_t *>(dev); - } catch(...) { @@ -205,7 +208,6 @@ try { - dev->cont = 0; if(dev->stream != NULL) @@ -216,6 +218,9 @@ } catch(...) {} + // the audio stream is silently allocated with new, but neither the API docs nor code examples mention that it should be deleted + delete dev->stream; + delete dev->oboe_callback; FLUID_FREE(dev); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fluidsynth-2.1.1/src/drivers/fluid_opensles.c new/fluidsynth-2.1.2/src/drivers/fluid_opensles.c --- old/fluidsynth-2.1.1/src/drivers/fluid_opensles.c 2020-02-16 19:55:28.000000000 +0100 +++ new/fluidsynth-2.1.2/src/drivers/fluid_opensles.c 2020-04-06 10:40:37.000000000 +0200 @@ -109,7 +109,7 @@ if(!dev->engine) { - FLUID_LOG(FLUID_ERR, "Failed to create OpenSLES connection"); + FLUID_LOG(FLUID_ERR, "Failed to create the OpenSL ES engine, error code 0x%lx", result); goto error_recovery; } @@ -117,6 +117,7 @@ if(result != SL_RESULT_SUCCESS) { + FLUID_LOG(FLUID_ERR, "Failed to realize the OpenSL ES engine, error code 0x%lx", result); goto error_recovery; } @@ -124,6 +125,7 @@ if(result != SL_RESULT_SUCCESS) { + FLUID_LOG(FLUID_ERR, "Failed to retrieve the OpenSL ES engine interface, error code 0x%lx", result); goto error_recovery; } @@ -131,6 +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); goto error_recovery; } @@ -138,6 +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); goto error_recovery; } @@ -179,6 +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); goto error_recovery; } @@ -186,6 +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); goto error_recovery; } @@ -194,6 +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); goto error_recovery; } @@ -202,6 +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); goto error_recovery; } @@ -224,23 +232,38 @@ if(result != SL_RESULT_SUCCESS) { + FLUID_LOG(FLUID_ERR, "Failed to register the opensles_callback, error code 0x%lx", result); goto error_recovery; } if(dev->is_sample_format_float) { - (*dev->player_buffer_queue_interface)->Enqueue(dev->player_buffer_queue_interface, dev->sles_buffer_float, dev->period_frames * NUM_CHANNELS * sizeof(float)); + result = (*dev->player_buffer_queue_interface)->Enqueue(dev->player_buffer_queue_interface, dev->sles_buffer_float, dev->period_frames * NUM_CHANNELS * sizeof(float)); } else { - (*dev->player_buffer_queue_interface)->Enqueue(dev->player_buffer_queue_interface, dev->sles_buffer_short, dev->period_frames * NUM_CHANNELS * sizeof(short)); + result = (*dev->player_buffer_queue_interface)->Enqueue(dev->player_buffer_queue_interface, dev->sles_buffer_short, dev->period_frames * NUM_CHANNELS * sizeof(short)); + } + + if(result != SL_RESULT_SUCCESS) + { + FLUID_LOG(FLUID_ERR, "Failed to add a buffer to the queue, error code 0x%lx", result); + goto error_recovery; + } + + result = (*dev->audio_player_interface)->SetCallbackEventsMask(dev->audio_player_interface, SL_PLAYEVENT_HEADATEND); + + if(result != SL_RESULT_SUCCESS) + { + FLUID_LOG(FLUID_ERR, "Failed to set OpenSL ES audio player callback events, error code 0x%lx", result); + goto error_recovery; } - (*dev->audio_player_interface)->SetCallbackEventsMask(dev->audio_player_interface, SL_PLAYEVENT_HEADATEND); result = (*dev->audio_player_interface)->SetPlayState(dev->audio_player_interface, SL_PLAYSTATE_PLAYING); 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); goto error_recovery; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fluidsynth-2.1.1/src/drivers/fluid_sdl2.c new/fluidsynth-2.1.2/src/drivers/fluid_sdl2.c --- old/fluidsynth-2.1.1/src/drivers/fluid_sdl2.c 2020-02-16 19:55:28.000000000 +0100 +++ new/fluidsynth-2.1.2/src/drivers/fluid_sdl2.c 2020-04-06 10:40:37.000000000 +0200 @@ -60,7 +60,7 @@ if(!SDL_WasInit(SDL_INIT_AUDIO)) { - FLUID_LOG(FLUID_ERR, "SDL2 not initialized"); + FLUID_LOG(FLUID_WARN, "SDL2 not initialized, SDL2 audio driver won't be usable"); return; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fluidsynth-2.1.1/src/fluidsynth.c new/fluidsynth-2.1.2/src/fluidsynth.c --- old/fluidsynth-2.1.1/src/fluidsynth.c 2020-02-16 19:55:28.000000000 +0100 +++ new/fluidsynth-2.1.2/src/fluidsynth.c 2020-04-06 10:40:37.000000000 +0200 @@ -490,7 +490,10 @@ } else { - fluid_settings_setstr(settings, "audio.driver", optarg); + if(fluid_settings_setstr(settings, "audio.driver", optarg) != FLUID_OK) + { + goto cleanup; + } } break; @@ -508,7 +511,10 @@ break; case 'c': - fluid_settings_setint(settings, "audio.periods", atoi(optarg)); + if(fluid_settings_setint(settings, "audio.periods", atoi(optarg)) != FLUID_OK) + { + goto cleanup; + } break; case 'd': @@ -533,7 +539,10 @@ } else { - fluid_settings_setstr(settings, "audio.file.endian", optarg); + if(fluid_settings_setstr(settings, "audio.file.endian", optarg) != FLUID_OK) + { + goto cleanup; + } } break; @@ -543,7 +552,10 @@ break; case 'F': - fluid_settings_setstr(settings, "audio.file.name", optarg); + if(fluid_settings_setstr(settings, "audio.file.name", optarg) != FLUID_OK) + { + goto cleanup; + } fast_render = 1; break; @@ -552,7 +564,10 @@ break; case 'g': - fluid_settings_setnum(settings, "synth.gain", atof(optarg)); + if(fluid_settings_setnum(settings, "synth.gain", atof(optarg)) != FLUID_OK) + { + goto cleanup; + } break; case 'h': @@ -572,12 +587,18 @@ break; case 'K': - fluid_settings_setint(settings, "synth.midi-channels", atoi(optarg)); + if(fluid_settings_setint(settings, "synth.midi-channels", atoi(optarg)) != FLUID_OK) + { + goto cleanup; + } break; case 'L': audio_channels = atoi(optarg); - fluid_settings_setint(settings, "synth.audio-channels", audio_channels); + if(fluid_settings_setint(settings, "synth.audio-channels", audio_channels) != FLUID_OK) + { + goto cleanup; + } break; case 'l': /* disable LASH */ @@ -596,7 +617,10 @@ } else { - fluid_settings_setstr(settings, "midi.driver", optarg); + if(fluid_settings_setstr(settings, "midi.driver", optarg) != FLUID_OK) + { + goto cleanup; + } } break; @@ -636,7 +660,10 @@ break; case 'p' : - fluid_settings_setstr(settings, "midi.portname", optarg); + if(fluid_settings_setstr(settings, "midi.portname", optarg) != FLUID_OK) + { + goto cleanup; + } break; case 'q': @@ -665,7 +692,10 @@ break; case 'r': - fluid_settings_setnum(settings, "synth.sample-rate", atof(optarg)); + if(fluid_settings_setnum(settings, "synth.sample-rate", atof(optarg)) != FLUID_OK) + { + goto cleanup; + } break; case 's': @@ -692,7 +722,10 @@ } else { - fluid_settings_setstr(settings, "audio.file.type", optarg); + if(fluid_settings_setstr(settings, "audio.file.type", optarg) != FLUID_OK) + { + goto cleanup; + } } break; @@ -710,7 +743,10 @@ break; case 'z': - fluid_settings_setint(settings, "audio.period-size", atoi(optarg)); + if(fluid_settings_setint(settings, "audio.period-size", atoi(optarg)) != FLUID_OK) + { + goto cleanup; + } break; #ifdef GETOPT_SUPPORT @@ -780,7 +816,10 @@ if(audio_groups != 0) { - fluid_settings_setint(settings, "synth.audio-groups", audio_groups); + if(fluid_settings_setint(settings, "synth.audio-groups", audio_groups) != FLUID_OK) + { + goto cleanup; + } } if(fast_render) @@ -970,12 +1009,13 @@ } fluid_settings_dupstr(settings, "audio.file.name", &filename); - if (!quiet) { - printf("Rendering audio to file '%s'..\n", filename); - } - if(filename) { + if (!quiet) + { + printf("Rendering audio to file '%s'..\n", filename); + } + FLUID_FREE(filename); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fluidsynth-2.1.1/src/midi/fluid_midi.c new/fluidsynth-2.1.2/src/midi/fluid_midi.c --- old/fluidsynth-2.1.1/src/midi/fluid_midi.c 2020-02-16 19:55:28.000000000 +0100 +++ new/fluidsynth-2.1.2/src/midi/fluid_midi.c 2020-04-06 10:40:37.000000000 +0200 @@ -2207,6 +2207,7 @@ * @param player MIDI player instance * @param tempo Tempo to set playback speed to (in microseconds per quarter note, as per MIDI file spec) * @return Always returns #FLUID_OK + * @note Tempo change events contained in the MIDI file can override the specified tempo at any time! */ int fluid_player_set_midi_tempo(fluid_player_t *player, int tempo) { @@ -2227,6 +2228,7 @@ * @param player MIDI player instance * @param bpm Tempo in beats per minute * @return Always returns #FLUID_OK + * @note Tempo change events contained in the MIDI file can override the specified BPM at any time! */ int fluid_player_set_bpm(fluid_player_t *player, int bpm) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fluidsynth-2.1.1/src/synth/fluid_synth.c new/fluidsynth-2.1.2/src/synth/fluid_synth.c --- old/fluidsynth-2.1.1/src/synth/fluid_synth.c 2020-02-16 19:55:28.000000000 +0100 +++ new/fluidsynth-2.1.2/src/synth/fluid_synth.c 2020-04-06 10:40:37.000000000 +0200 @@ -3624,7 +3624,7 @@ * <code>0 <= j < fluid_synth_count_effects_channels()</code> is a zero-based index denoting the effect channel within * unit \p k. * - * Any voice playing is assigned to audio channels based on the MIDI channel its playing on. Let \p chan be the + * Any playing voice is assigned to audio channels based on the MIDI channel it's playing on: Let \p chan be the * zero-based MIDI channel index an arbitrary voice is playing on. To determine the audio channel and effects unit it is * going to be rendered to use: *
