From 32bcad51b89d024cab47fc3670b30dc7fed57479 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Thu, 16 Mar 2017 10:50:12 +0100 Subject: [PATCH 1/7] configure.ac: prepare for 0.20.7 --- NEWS | 2 ++ configure.ac | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index 0e6d2a1d5..a7b441c6f 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,5 @@ +ver 0.20.7 (not yet released) + ver 0.20.6 (2017/03/10) * input - curl: fix headers after HTTP redirect to Shoutcast server diff --git a/configure.ac b/configure.ac index 00f60c69a..cb74afbdb 100644 --- a/configure.ac +++ b/configure.ac @@ -1,10 +1,10 @@ AC_PREREQ(2.60) -AC_INIT(mpd, 0.20.6, musicpd-dev-team@lists.sourceforge.net) +AC_INIT(mpd, 0.20.7, musicpd-dev-team@lists.sourceforge.net) VERSION_MAJOR=0 VERSION_MINOR=20 -VERSION_REVISION=6 +VERSION_REVISION=7 VERSION_EXTRA=0 AC_CONFIG_SRCDIR([src/Main.cxx]) From 504f5f7bddd81d3b02d00255f5ce693352ca836b Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Thu, 6 Apr 2017 09:58:25 +0200 Subject: [PATCH 2/7] storage/FileInfo, db/simple/Directory: use 64 bit for device/inode An ino_t is usually a 64 bit integer, and some file systems (such as Linux's kernel NFS client) really uses the upper 32 bit. This can lead to false positives in the directory loop detection in FindAncestorLoop(). Increasing these two attributes (in StorageFileInfo and Directory) to 64 bit adds little overhead, but makes the check a lot safer. --- NEWS | 2 ++ src/db/plugins/simple/Directory.hxx | 2 +- src/storage/FileInfo.hxx | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index a7b441c6f..c57c9dca3 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,6 @@ ver 0.20.7 (not yet released) +* database + - simple: fix false positive directory loop detection with NFS ver 0.20.6 (2017/03/10) * input diff --git a/src/db/plugins/simple/Directory.hxx b/src/db/plugins/simple/Directory.hxx index ee720108c..15631a091 100644 --- a/src/db/plugins/simple/Directory.hxx +++ b/src/db/plugins/simple/Directory.hxx @@ -86,7 +86,7 @@ struct Directory { Directory *parent; time_t mtime; - unsigned inode, device; + uint64_t inode, device; std::string path; diff --git a/src/storage/FileInfo.hxx b/src/storage/FileInfo.hxx index a69b47f0d..7a5cdca73 100644 --- a/src/storage/FileInfo.hxx +++ b/src/storage/FileInfo.hxx @@ -48,7 +48,7 @@ struct StorageFileInfo { * Device id and inode number. 0 means unknown / not * applicable. */ - unsigned device, inode; + uint64_t device, inode; constexpr bool IsRegular() const { return type == Type::REGULAR; From 811620c0a0e01f0016d259fc6bf01aaa3609f6fe Mon Sep 17 00:00:00 2001 From: cotko Date: Thu, 23 Mar 2017 14:23:01 +0100 Subject: [PATCH 3/7] Fix typo --- doc/user.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/user.xml b/doc/user.xml index 865369c23..461d7f1b7 100644 --- a/doc/user.xml +++ b/doc/user.xml @@ -4080,7 +4080,7 @@ run (logical "and") can be used to select portions of the format string depending on the existing tag values. Example: - ~/.mpd/recorder/[%title|%name%].ogg + ~/.mpd/recorder/[%title%|%name%].ogg (use the "name" tag if no title exists) From a13e0457423e63fefc3a45fc4d2b824bef20df0b Mon Sep 17 00:00:00 2001 From: martinarielhartmann Date: Sun, 26 Mar 2017 15:07:26 +0300 Subject: [PATCH 4/7] Update libs.py upgrade zlib to 1.2.11 --- python/build/libs.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/build/libs.py b/python/build/libs.py index d4b994655..7f757d93c 100644 --- a/python/build/libs.py +++ b/python/build/libs.py @@ -36,8 +36,8 @@ flac = AutotoolsProject( ) zlib = ZlibProject( - 'http://zlib.net/zlib-1.2.8.tar.xz', - '28f1205d8dd2001f26fec1e8c2cebe37', + 'http://zlib.net/zlib-1.2.11.tar.xz', + '4ff941449631ace0d4d203e3483be9dbc9da454084111f97ea0a2114e19bf066', 'lib/libz.a', ) From 38da76bbe0ba1eda82c5b0f6bb69b3f7bd0c9b73 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Wed, 12 Apr 2017 13:11:43 +0200 Subject: [PATCH 5/7] util/ScopeExit: copy enabled tag in move constructor --- src/util/ScopeExit.hxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/util/ScopeExit.hxx b/src/util/ScopeExit.hxx index 0c7414f18..e93601dd4 100644 --- a/src/util/ScopeExit.hxx +++ b/src/util/ScopeExit.hxx @@ -45,7 +45,7 @@ public: explicit ScopeExitGuard(F &&f):F(std::forward(f)) {} ScopeExitGuard(ScopeExitGuard &&src) - :F(std::move(src)) { + :F(std::move(src)), enabled(src.enabled) { src.enabled = false; } From 0a7d612f41bc61a7218a711e48653bc178186421 Mon Sep 17 00:00:00 2001 From: Bart Nagel Date: Sun, 16 Apr 2017 13:15:09 -0700 Subject: [PATCH 6/7] Remove some redundant code --- src/output/plugins/RoarOutputPlugin.cxx | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/output/plugins/RoarOutputPlugin.cxx b/src/output/plugins/RoarOutputPlugin.cxx index 0bdffe875..e774bbfe8 100644 --- a/src/output/plugins/RoarOutputPlugin.cxx +++ b/src/output/plugins/RoarOutputPlugin.cxx @@ -289,8 +289,6 @@ roar_tag_convert(TagType type, bool *is_uuid) case TAG_MUSICBRAINZ_ALBUMID: case TAG_MUSICBRAINZ_ALBUMARTISTID: case TAG_MUSICBRAINZ_TRACKID: - *is_uuid = true; - return "HASH"; case TAG_MUSICBRAINZ_RELEASETRACKID: *is_uuid = true; return "HASH"; From 7b7fb5acd5ec6f0c0fce625837e1507139dc1cc6 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Mon, 24 Apr 2017 11:20:37 +0200 Subject: [PATCH 7/7] decoder/pcm: fix potential assertion failure in FillBuffer() After a seek failure, the buffer may still be full, and then FillBuffer() aborts with assertion failure. --- src/decoder/plugins/PcmDecoderPlugin.cxx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/decoder/plugins/PcmDecoderPlugin.cxx b/src/decoder/plugins/PcmDecoderPlugin.cxx index 6382e8c07..a74db186b 100644 --- a/src/decoder/plugins/PcmDecoderPlugin.cxx +++ b/src/decoder/plugins/PcmDecoderPlugin.cxx @@ -43,7 +43,8 @@ FillBuffer(DecoderClient &client, InputStream &is, B &buffer) { buffer.Shift(); auto w = buffer.Write(); - assert(!w.IsEmpty()); + if (w.IsEmpty()) + return true; size_t nbytes = decoder_read(client, is, w.data, w.size); if (nbytes == 0 && is.LockIsEOF())