View | Details | Raw Unified
Collapse All | Expand All

(-) taglib/ape/apeitem.cpp (-6 / +19 lines)
 Lines 106-112    Link Here 
void MPC::Properties::read()
void MPC::Properties::read()
{
{
  if(d->data.mid(0, 3) != "MP+")
  if(!d->data.startsWith("MP+"))
    return;
    return;
  d->version = d->data[3] & 15;
  d->version = d->data[3] & 15;
 Lines 116-122    Link Here 
  if(d->version >= 7) {
  if(d->version >= 7) {
    frames = d->data.mid(4, 4).toUInt(false);
    frames = d->data.mid(4, 4).toUInt(false);
    std::bitset<32> flags = d->data.mid(8, 4).toUInt(true);
    std::bitset<32> flags = d->data.mid(8, 4).toUInt(false);
    d->sampleRate = sftable[flags[17] * 2 + flags[16]];
    d->sampleRate = sftable[flags[17] * 2 + flags[16]];
    d->channels = 2;
    d->channels = 2;
  }
  }
 Lines 53-59    Link Here 
  ~FilePrivate()
  ~FilePrivate()
  {
  {
    if (tag != ID3v1Tag && tag != APETag) delete tag;
    delete ID3v1Tag;
    delete ID3v1Tag;
    delete APETag;
    delete ID3v2Header;
    delete properties;
    delete properties;
  }
  }
 Lines 227-233    Link Here 
    if(d->APETag)
    if(d->APETag)
      d->tag = d->APETag;
      d->tag = d->APETag;
    else
    else
      d->tag = d->APETag = new APE::Tag();
      d->tag = d->APETag = new APE::Tag;
  }
  }
  if(tags & ID3v2) {
  if(tags & ID3v2) {
 Lines 242-248    Link Here 
    if(d->ID3v1Tag)
    if(d->ID3v1Tag)
      d->tag = d->ID3v1Tag;
      d->tag = d->ID3v1Tag;
    else
    else
      d->tag = d->APETag = new APE::Tag();
      d->tag = d->APETag = new APE::Tag;
  }
  }
}
}
 Lines 284-290    Link Here 
      if(d->hasAPE)
      if(d->hasAPE)
        d->tag = d->APETag;
        d->tag = d->APETag;
      else
      else
        d->tag = d->APETag = new APE::Tag();
        d->tag = d->APETag = new APE::Tag;
    }
    }
  }
  }
 Lines 70-75    Link Here 
      Item(const Item &item);
      Item(const Item &item);
      /*!
      /*!
       * Destroys the item.
       */
      virtual ~Item();
      /*!
       * Copies the contents of \a item into this item.
       * Copies the contents of \a item into this item.
       */
       */
      Item &operator=(const Item &item);
      Item &operator=(const Item &item);
 Lines 62-67    Link Here 
  d = new ItemPrivate(*item.d);
  d = new ItemPrivate(*item.d);
}
}
APE::Item::~Item()
{
  delete d;
}
Item &APE::Item::operator=(const Item &item)
Item &APE::Item::operator=(const Item &item)
{
{
  delete d;
  delete d;
 Lines 121-127    Link Here 
    case 1:
    case 1:
      if(d->text.isEmpty())
      if(d->text.isEmpty())
        return true;
        return true;
      if(d->text.size() == 1 && d->text.front() == "")
      if(d->text.size() == 1 && d->text.front().isEmpty())
        return true;
        return true;
      return false;
      return false;
    case 2:
    case 2: