Fix upgrading of ID3v2.3 genre with number 0 (Blues)

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@1114089 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
This commit is contained in:
Lukáš Lalinský
2010-04-12 18:27:59 +00:00
parent d5eb51e452
commit 19b2341411
5 changed files with 61 additions and 19 deletions

View File

@ -412,10 +412,11 @@ void FrameFactory::updateGenre(TextIdentificationFrame *frame) const
if(s.startsWith("(") && end > 0) {
// "(12)Genre"
String text = s.substr(end + 1);
int number = s.substr(1, end - 1).toInt();
if (number > 0 && number <= 255 && !(ID3v1::genre(number) == text))
bool ok;
int number = s.substr(1, end - 1).toInt(&ok);
if(ok && number >= 0 && number <= 255 && !(ID3v1::genre(number) == text))
newfields.append(s.substr(1, end - 1));
if (!text.isEmpty())
if(!text.isEmpty())
newfields.append(text);
}
else {

View File

@ -164,19 +164,10 @@ String ID3v2::Tag::genre() const
if((*it).isEmpty())
continue;
bool isNumber = true;
for(String::ConstIterator charIt = (*it).begin();
isNumber && charIt != (*it).end();
++charIt)
{
isNumber = *charIt >= '0' && *charIt <= '9';
}
if(isNumber) {
int number = (*it).toInt();
if(number >= 0 && number <= 255)
*it = ID3v1::genre(number);
bool ok;
int number = (*it).toInt(&ok);
if(ok && number >= 0 && number <= 255) {
*it = ID3v1::genre(number);
}
if(std::find(genres.begin(), genres.end(), *it) == genres.end())