From: Lukáš Lalinský Date: Thu, 22 May 2008 20:40:14 +0000 (+0000) Subject: Fix reading of POPM rating -- it's unsigned char, not just char X-Git-Tag: v1.6rc1~69 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9ce4c72995b7caeff54826f779d87aeee3e4c280;p=taglib Fix reading of POPM rating -- it's unsigned char, not just char git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@811387 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- diff --git a/taglib/mpeg/id3v2/frames/popularimeterframe.cpp b/taglib/mpeg/id3v2/frames/popularimeterframe.cpp index 027ea848..e65cbe0c 100644 --- a/taglib/mpeg/id3v2/frames/popularimeterframe.cpp +++ b/taglib/mpeg/id3v2/frames/popularimeterframe.cpp @@ -107,7 +107,7 @@ void PopularimeterFrame::parseFields(const ByteVector &data) d->rating = 0; d->counter = 0; if(pos < size) { - d->rating = data[pos++]; + d->rating = (unsigned char)(data[pos++]); if(pos < size) { d->counter = data.mid(pos, 4).toUInt(); } diff --git a/tests/test_id3v2.cpp b/tests/test_id3v2.cpp index 027ecacc..07b33f1e 100644 --- a/tests/test_id3v2.cpp +++ b/tests/test_id3v2.cpp @@ -201,7 +201,7 @@ public: ID3v2::PopularimeterFrame *f = new ID3v2::PopularimeterFrame(); f->setEmail("email@example.com"); - f->setRating(2); + f->setRating(200); f->setCounter(3); MPEG::File foo(newname.c_str()); @@ -210,6 +210,7 @@ public: MPEG::File bar(newname.c_str()); CPPUNIT_ASSERT_EQUAL(String("email@example.com"), dynamic_cast(bar.ID3v2Tag()->frameList("POPM").front())->email()); + CPPUNIT_ASSERT_EQUAL(200, dynamic_cast(bar.ID3v2Tag()->frameList("POPM").front())->rating()); deleteFile(newname); }