Hello community,

here is the log from the commit of package clementine for openSUSE:Factory 
checked in at 2019-06-06 18:16:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/clementine (Old)
 and      /work/SRC/openSUSE:Factory/.clementine.new.4811 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "clementine"

Thu Jun  6 18:16:58 2019 rev:50 rq:707792 version:1.3.1+git20190423

Changes:
--------
--- /work/SRC/openSUSE:Factory/clementine/clementine.changes    2019-05-24 
11:33:00.673375368 +0200
+++ /work/SRC/openSUSE:Factory/.clementine.new.4811/clementine.changes  
2019-06-06 18:16:59.732691769 +0200
@@ -1,0 +2,12 @@
+Wed Jun  5 09:27:00 UTC 2019 - Dave Plater <davejpla...@gmail.com>
+
+- Added patch from git 96a7e18a8d2be8d9f3223a6a6c81fbaac1179869 to
+  fix various Tag zero value issues:
+  0001-Fix-a-number-of-potential-zero-value-field-values.patch
+
+-------------------------------------------------------------------
+Fri May 24 07:05:52 UTC 2019 - plater <davejpla...@gmail.com>
+
+- Build with -fsanitize=address.
+
+-------------------------------------------------------------------

New:
----
  0001-Fix-a-number-of-potential-zero-value-field-values.patch

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

Other differences:
------------------
++++++ clementine.spec ++++++
--- /var/tmp/diff_new_pack.gGYvUU/_old  2019-06-06 18:17:00.696691487 +0200
+++ /var/tmp/diff_new_pack.gGYvUU/_new  2019-06-06 18:17:00.696691487 +0200
@@ -62,6 +62,7 @@
 Patch17:        0001-Fixes-for-APE-filetype.patch
 Patch18:        0001-Simplify-some-statements.patch
 Patch19:        0001-Set-non-zero-minimum-for-fade-times.patch
+Patch20:        0001-Fix-a-number-of-potential-zero-value-field-values.patch
 %if 0%{?suse_version} > 1325
 BuildRequires:  libboost_headers-devel
 %else
@@ -168,7 +169,7 @@
 rm -rvf 3rdparty/SPMediaKeyTap
 
 %build
-export CFLAGS="%{optflags} -fno-strict-aliasing"
+export CFLAGS="%{optflags} -fno-strict-aliasing -fsanitize=address -ggdb"
 export CXXFLAGS="$CFLAGS"
 %cmake \
   -DBUILD_WERROR=OFF                   \

++++++ 0001-Fix-a-number-of-potential-zero-value-field-values.patch ++++++
>From 96a7e18a8d2be8d9f3223a6a6c81fbaac1179869 Mon Sep 17 00:00:00 2001
From: "James D. Smith" <smithj...@gmail.com>
Date: Wed, 3 Apr 2019 10:13:57 -0600
Subject: [PATCH] Fix a number of potential zero-value field values.

---
 ext/libclementine-tagreader/tagreader.cpp | 104 +++++++++++++++---------------
 1 file changed, 52 insertions(+), 52 deletions(-)

diff --git a/ext/libclementine-tagreader/tagreader.cpp 
b/ext/libclementine-tagreader/tagreader.cpp
index 900f042b4..26f81be75 100644
--- a/ext/libclementine-tagreader/tagreader.cpp
+++ b/ext/libclementine-tagreader/tagreader.cpp
@@ -692,10 +692,10 @@ void TagReader::SetVorbisComments(
   vorbis_comments->addField(
       "DISCNUMBER",
       QStringToTaglibString(
-          song.disc() <= 0 - 1 ? QString() : QString::number(song.disc())),
+          song.disc() <= 0 ? QString() : QString::number(song.disc())),
       true);
   vorbis_comments->addField(
-      "COMPILATION", StdStringToTaglibString(song.compilation() ? "1" : "0"),
+      "COMPILATION", QStringToTaglibString(song.compilation() ? 
QString::number(1) : QString()),
       true);
 
   // Try to be coherent, the two forms are used but the first one is preferred
@@ -712,19 +712,20 @@ void TagReader::SetVorbisComments(
 void TagReader::SetFMPSStatisticsVorbisComments(
     TagLib::Ogg::XiphComment* vorbis_comments,
     const pb::tagreader::SongMetadata& song) const {
-  vorbis_comments->addField(
-      "FMPS_PLAYCOUNT",
-      QStringToTaglibString(QString::number(song.playcount())));
-  vorbis_comments->addField(
-      "FMPS_RATING_AMAROK_SCORE",
-      QStringToTaglibString(QString::number(song.score() / 100.0)));
+  if (song.playcount())
+      vorbis_comments->addField(
+          "FMPS_PLAYCOUNT", TagLib::String::number(song.playcount()), true);
+  if (song.score())
+      vorbis_comments->addField(
+          "FMPS_RATING_AMAROK_SCORE", QStringToTaglibString(
+              QString::number(song.score() / 100.0)), true);
 }
 
 void TagReader::SetFMPSRatingVorbisComments(
     TagLib::Ogg::XiphComment* vorbis_comments,
     const pb::tagreader::SongMetadata& song) const {
   vorbis_comments->addField(
-      "FMPS_RATING", QStringToTaglibString(QString::number(song.rating())));
+      "FMPS_RATING", QStringToTaglibString(QString::number(song.rating())), 
true);
 }
 
 pb::tagreader::SongMetadata_Type TagReader::GuessFileType(
@@ -783,20 +784,14 @@ bool TagReader::SaveFile(const QString& filename,
   fileref->tag()->setAlbum(StdStringToTaglibString(song.album()));
   fileref->tag()->setGenre(StdStringToTaglibString(song.genre()));
   fileref->tag()->setComment(StdStringToTaglibString(song.comment()));
-  fileref->tag()->setYear(song.year());
-  fileref->tag()->setTrack(song.track());
+  fileref->tag()->setYear(song.year() <= 0 - 1 ? 0: song.year());
+  fileref->tag()->setTrack(song.track() <= 0 - 1 ? 0: song.track());
 
   auto saveApeTag = [&](TagLib::APE::Tag* tag) {
-    tag->setItem(
-        "disc",
-        TagLib::APE::Item("disc", TagLib::String::number(
-                                      song.disc() <= 0 - 1 ? 0 : 
song.disc())));
-    tag->setItem("bpm",
-                 TagLib::APE::Item(
-                     "bpm", TagLib::StringList(
-                                song.bpm() <= 0 - 1
-                                    ? "0"
-                                    : TagLib::String::number(song.bpm()))));
+    tag->addValue("disc", QStringToTaglibString(
+        song.disc() <= 0 ? QString() : QString::number(song.disc())), true);
+    tag->addValue("bpm", QStringToTaglibString(
+        song.bpm() <= 0 - 1 ? QString() : QString::number(song.bpm())), true);
     tag->setItem("composer",
                  TagLib::APE::Item(
                      "composer", TagLib::StringList(song.composer().c_str())));
@@ -812,17 +807,14 @@ bool TagReader::SaveFile(const QString& filename,
                           TagLib::StringList(song.albumartist().c_str())));
     tag->setItem("lyrics",
                  TagLib::APE::Item("lyrics", TagLib::String(song.lyrics())));
-    tag->setItem(
-        "compilation",
-        TagLib::APE::Item("compilation",
-                          TagLib::StringList(song.compilation() ? "1" : "0")));
+    tag->addValue("compilation", QStringToTaglibString(song.compilation() ? 
QString::number(1) : QString()), true);
   };
 
   if (TagLib::MPEG::File* file =
           dynamic_cast<TagLib::MPEG::File*>(fileref->file())) {
     TagLib::ID3v2::Tag* tag = file->ID3v2Tag(true);
     SetTextFrame(
-        "TPOS", song.disc() <= 0 - 1 ? QString() : 
QString::number(song.disc()),
+        "TPOS", song.disc() <= 0 ? QString() : QString::number(song.disc()),
         tag);
     SetTextFrame("TBPM",
                  song.bpm() <= 0 - 1 ? QString() : QString::number(song.bpm()),
@@ -833,7 +825,7 @@ bool TagReader::SaveFile(const QString& filename,
     SetUnsyncLyricsFrame(song.lyrics(), tag);
     // Skip TPE1 (which is the artist) here because we already set it
     SetTextFrame("TPE2", song.albumartist(), tag);
-    SetTextFrame("TCMP", std::string(song.compilation() ? "1" : "0"), tag);
+    SetTextFrame("TCMP", song.compilation() ? QString::number(1) : QString(), 
tag);
   } else if (TagLib::FLAC::File* file =
                  dynamic_cast<TagLib::FLAC::File*>(fileref->file())) {
     TagLib::Ogg::XiphComment* tag = file->xiphComment();
@@ -894,30 +886,33 @@ bool TagReader::SaveSongStatisticsToFile(
     return false;
 
   auto saveApeSongStats = [&](TagLib::APE::Tag* tag) {
-    tag->setItem(
-        "FMPS_Rating_Amarok_Score",
-        TagLib::APE::Item("FMPS_Rating_Amarok_Score",
-                          TagLib::StringList(QStringToTaglibString(
-                              QString::number(song.score() / 100.0)))));
-    tag->setItem(
-        "FMPS_PlayCount",
-        TagLib::APE::Item(
-            "FMPS_PlayCount",
-            TagLib::StringList(TagLib::String::number(song.playcount()))));
+    if (song.score())
+      tag->setItem(
+          "FMPS_Rating_Amarok_Score",
+          TagLib::APE::Item("FMPS_Rating_Amarok_Score", QStringToTaglibString(
+              QString::number(song.score() / 100.0))));
+    if (song.playcount())
+      tag->setItem("FMPS_PlayCount", TagLib::APE::Item(
+          "FMPS_PlayCount", TagLib::String::number(song.playcount())));
   };
 
   if (TagLib::MPEG::File* file =
           dynamic_cast<TagLib::MPEG::File*>(fileref->file())) {
     TagLib::ID3v2::Tag* tag = file->ID3v2Tag(true);
 
-    // Save as FMPS
-    SetUserTextFrame("FMPS_PlayCount", QString::number(song.playcount()), tag);
-    SetUserTextFrame("FMPS_Rating_Amarok_Score",
-                     QString::number(song.score() / 100.0), tag);
+    if (song.playcount()) {
+      // Save as FMPS
+      SetUserTextFrame("FMPS_PlayCount", QString::number(
+          song.playcount()), tag);
 
-    // Also save as POPM
-    TagLib::ID3v2::PopularimeterFrame* frame = GetPOPMFrameFromTag(tag);
-    frame->setCounter(song.playcount());
+      // Also save as POPM
+      TagLib::ID3v2::PopularimeterFrame* frame = GetPOPMFrameFromTag(tag);
+      frame->setCounter(song.playcount());
+    }
+
+    if (song.score())
+      SetUserTextFrame("FMPS_Rating_Amarok_Score",
+                       QString::number(song.score() / 100.0), tag);
 
   } else if (TagLib::FLAC::File* file =
                  dynamic_cast<TagLib::FLAC::File*>(fileref->file())) {
@@ -932,18 +927,23 @@ bool TagReader::SaveSongStatisticsToFile(
   else if (TagLib::ASF::File* file =
                dynamic_cast<TagLib::ASF::File*>(fileref->file())) {
     TagLib::ASF::Tag* tag = file->tag();
-    tag->addAttribute("FMPS/Playcount", 
NumberToASFAttribute(song.playcount()));
-    tag->addAttribute("FMPS/Rating_Amarok_Score",
-                      NumberToASFAttribute(song.score() / 100.0));
+    if (song.playcount())
+      tag->addAttribute("FMPS/Playcount", NumberToASFAttribute(
+          song.playcount()));
+    if (song.score())
+      tag->addAttribute("FMPS/Rating_Amarok_Score",
+                        NumberToASFAttribute(song.score() / 100.0));
   }
 #endif
   else if (TagLib::MP4::File* file =
                dynamic_cast<TagLib::MP4::File*>(fileref->file())) {
     TagLib::MP4::Tag* tag = file->tag();
-    tag->itemListMap()[kMP4_FMPS_Score_ID] = TagLib::StringList(
-        QStringToTaglibString(QString::number(song.score() / 100.0)));
-    tag->itemListMap()[kMP4_FMPS_Playcount_ID] =
-        TagLib::StringList(TagLib::String::number(song.playcount()));
+    if (song.score())
+      tag->itemListMap()[kMP4_FMPS_Score_ID] = TagLib::MP4::Item(
+          QStringToTaglibString(QString::number(song.score() / 100.0)));
+    if (song.playcount())
+      tag->itemListMap()[kMP4_FMPS_Playcount_ID] = TagLib::MP4::Item(
+          TagLib::String::number(song.playcount()));
   } else if (TagLib::APE::File* file =
                  dynamic_cast<TagLib::APE::File*>(fileref->file())) {
     saveApeSongStats(file->APETag(true));
@@ -974,7 +974,7 @@ bool TagReader::SaveSongRatingToFile(
   if (filename.isNull()) return false;
 
   qLog(Debug) << "Saving song rating tags to" << filename;
-  if (song.rating() < 0) {
+  if (song.rating()) {
     // The FMPS spec says unrated == "tag not present". For us, no rating
     // results in rating being -1, so don't write anything in that case.
     // Actually, we should also remove tag set in this case, but in
-- 
2.16.4


Reply via email to