Merge tag 'v0.23.12'

release v0.23.12
This commit is contained in:
Max Kellermann
2023-01-17 18:58:04 +01:00
7 changed files with 25 additions and 23 deletions

9
NEWS
View File

@@ -27,9 +27,16 @@ ver 0.24 (not yet released)
* remove Haiku support * remove Haiku support
* require libfmt 7 or later * require libfmt 7 or later
ver 0.23.12 (not yet released) ver 0.23.12 (2023/01/17)
* input
- curl: require CURL 7.55.0 or later
* decoder
- mad: fix integer underflow with very small files
* tags * tags
- fix crash bug due to race condition - fix crash bug due to race condition
* output
- pipewire: adjust to PipeWire 0.3.64 API change
* fix build failures with GCC 13
ver 0.23.11 (2022/11/28) ver 0.23.11 (2022/11/28)
* database * database

View File

@@ -204,7 +204,6 @@ enable_daemon = not is_windows and not is_android and get_option('daemon')
conf.set('ENABLE_DAEMON', enable_daemon) conf.set('ENABLE_DAEMON', enable_daemon)
conf.set('HAVE_GETPWNAM_R', compiler.has_function('getpwnam_r')) conf.set('HAVE_GETPWNAM_R', compiler.has_function('getpwnam_r'))
conf.set('HAVE_GETPWUID_R', compiler.has_function('getpwuid_r'))
conf.set('HAVE_INITGROUPS', compiler.has_function('initgroups')) conf.set('HAVE_INITGROUPS', compiler.has_function('initgroups'))
conf.set('HAVE_FNMATCH', compiler.has_function('fnmatch')) conf.set('HAVE_FNMATCH', compiler.has_function('fnmatch'))

View File

@@ -393,8 +393,8 @@ openssl = OpenSSLProject(
) )
curl = CmakeProject( curl = CmakeProject(
'https://curl.se/download/curl-7.86.0.tar.xz', 'https://curl.se/download/curl-7.87.0.tar.xz',
'2d61116e5f485581f6d59865377df4463f2e788677ac43222b496d4e49fb627b', 'ee5f1a1955b0ed413435ef79db28b834ea5f0fb7c8cfb1ce47175cc3bee08fff',
'lib/libcurl.a', 'lib/libcurl.a',
[ [
'-DBUILD_CURL_EXE=OFF', '-DBUILD_CURL_EXE=OFF',
@@ -450,7 +450,7 @@ jack = JackProject(
) )
boost = BoostProject( boost = BoostProject(
'https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_1_80_0.tar.bz2', 'https://boostorg.jfrog.io/artifactory/main/release/1.81.0/source/boost_1_81_0.tar.bz2',
'1e19565d82e43bc59209a168f5ac899d3ba471d55c7610c677d4ccf2c9c500c0', '71feeed900fbccca04a3b4f2f84a7c217186f28a940ed8b7ed4725986baf99fa',
'include/boost/version.hpp', 'include/boost/version.hpp',
) )

View File

@@ -798,6 +798,8 @@ MadDecoder::UpdateTimerNextFrame() noexcept
DecoderCommand DecoderCommand
MadDecoder::SubmitPCM(size_t i, size_t pcm_length) noexcept MadDecoder::SubmitPCM(size_t i, size_t pcm_length) noexcept
{ {
assert(i <= pcm_length);
size_t num_samples = pcm_length - i; size_t num_samples = pcm_length - i;
mad_fixed_to_24_buffer(output_buffer, synth.pcm, mad_fixed_to_24_buffer(output_buffer, synth.pcm,
@@ -843,7 +845,7 @@ MadDecoder::SynthAndSubmit() noexcept
size_t pcm_length = synth.pcm.length; size_t pcm_length = synth.pcm.length;
if (drop_end_samples && if (drop_end_samples &&
current_frame == max_frames - drop_end_frames - 1) { current_frame == max_frames - drop_end_frames - 1) {
if (drop_end_samples >= pcm_length) if (i + drop_end_samples >= pcm_length)
return DecoderCommand::STOP; return DecoderCommand::STOP;
pcm_length -= drop_end_samples; pcm_length -= drop_end_samples;

View File

@@ -34,7 +34,6 @@
#include <shlobj.h> #include <shlobj.h>
#else #else
#include <stdlib.h> #include <stdlib.h>
#include <unistd.h>
#include <pwd.h> #include <pwd.h>
#endif #endif
@@ -83,16 +82,7 @@ public:
return result != nullptr; return result != nullptr;
} }
bool ReadByUid(uid_t uid) noexcept { const passwd *operator->() {
#ifdef HAVE_GETPWUID_R
getpwuid_r(uid, &pw, buf.data(), buf.size(), &result);
#else
result = getpwuid(uid);
#endif
return result != nullptr;
}
const passwd *operator->() noexcept {
assert(result != nullptr); assert(result != nullptr);
return result; return result;
} }
@@ -415,10 +405,8 @@ GetHomeDir() noexcept
#ifndef ANDROID #ifndef ANDROID
if (const auto home = GetExistingEnvDirectory("HOME"); home != nullptr) if (const auto home = GetExistingEnvDirectory("HOME"); home != nullptr)
return AllocatedPath{home}; return AllocatedPath{home};
if (PasswdEntry pw; pw.ReadByUid(getuid()))
return SafePathFromFS(pw->pw_dir);
#endif #endif
return nullptr; return nullptr;
} }

View File

@@ -1,4 +1,4 @@
curl_dep = dependency('libcurl', version: '>= 7.33', required: get_option('curl')) curl_dep = dependency('libcurl', version: '>= 7.55', required: get_option('curl'))
conf.set('ENABLE_CURL', curl_dep.found()) conf.set('ENABLE_CURL', curl_dep.found())
if not curl_dep.found() if not curl_dep.found()
subdir_done() subdir_done()

View File

@@ -522,7 +522,13 @@ PipeWireOutput::Open(AudioFormat &audio_format)
pw_properties_setf(props, PW_KEY_REMOTE_NAME, "%s", remote); pw_properties_setf(props, PW_KEY_REMOTE_NAME, "%s", remote);
if (target != nullptr && target_id == PW_ID_ANY) if (target != nullptr && target_id == PW_ID_ANY)
pw_properties_setf(props, PW_KEY_NODE_TARGET, "%s", target); pw_properties_setf(props,
#if PW_CHECK_VERSION(0, 3, 64)
PW_KEY_TARGET_OBJECT,
#else
PW_KEY_NODE_TARGET,
#endif
"%s", target);
#ifdef PW_KEY_NODE_RATE #ifdef PW_KEY_NODE_RATE
/* ask PipeWire to change the graph sample rate to ours /* ask PipeWire to change the graph sample rate to ours