]> granicus.if.org Git - taglib/commitdiff
fix memory leaks
authorScott Wheeler <wheeler@kde.org>
Sun, 3 Apr 2005 16:35:55 +0000 (16:35 +0000)
committerScott Wheeler <wheeler@kde.org>
Sun, 3 Apr 2005 16:35:55 +0000 (16:35 +0000)
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@402891 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

ape/apeitem.cpp
ape/apeitem.h
examples/Makefile.am
examples/framelist.cpp
mpc/mpcfile.cpp

index d4a25d296a43034eea64159db1a76e145739f896..7f3642414eb9a099ac5b7250c10415a5a5c55146 100644 (file)
@@ -62,6 +62,11 @@ APE::Item::Item(const Item &item)
   d = new ItemPrivate(*item.d);
 }
 
+APE::Item::~Item()
+{
+  delete d;
+}
+
 Item &APE::Item::operator=(const Item &item)
 {
   delete d;
index f0a1d16abb571fe38caff412d5cbe3a289eb8cf1..634876559a78d642de6f46238b5e4fd5714ad968 100644 (file)
@@ -69,6 +69,11 @@ namespace TagLib {
        */
       Item(const Item &item);
 
+      /*!
+       * Destroys the item.
+       */
+      virtual ~Item();
+
       /*!
        * Copies the contents of \a item into this item.
        */
index 71665b992ab26387b4a11fc2355fb5e59b9dd3ad..390a627236a26977a5912c74f9605a7eb9a37e78 100644 (file)
@@ -11,6 +11,8 @@ INCLUDES = \
        -I$(top_srcdir)/taglib/mpeg \
        -I$(top_srcdir)/taglib/mpeg/id3v1 \
        -I$(top_srcdir)/taglib/mpeg/id3v2 \
+       -I$(top_srcdir)/taglib/ogg \
+       -I$(top_srcdir)/taglib/ogg/vorbis \
        -I$(top_srcdir)/taglib/bindings/c
 
 LDADD = ../libtag.la
index 01dfea0630168c1b052e010a139fdd16f518e113..4a0079d9037a58daa9e941cdf1004179e2528225 100644 (file)
@@ -27,6 +27,7 @@
 #include <unistd.h>
 
 #include <tbytevector.h>
+#include <fileref.h>
 
 #include <mpegfile.h>
 
@@ -36,6 +37,9 @@
 
 #include <id3v1tag.h>
 
+#include <vorbisfile.h>
+#include <xiphcomment.h>
+
 using namespace std;
 using namespace TagLib;
 
@@ -43,49 +47,66 @@ int main(int argc, char *argv[])
 {
   // process the command line args
 
-
   for(int i = 1; i < argc; i++) {
 
     cout << "******************** \"" << argv[i] << "\"********************" << endl;
 
-    MPEG::File f(argv[i]);
+    FileRef file(argv[i]);
 
-    ID3v2::Tag *id3v2tag = f.ID3v2Tag();
+    if(dynamic_cast<MPEG::File *>(file.file())) {
+      MPEG::File *f = static_cast<MPEG::File *>(file.file());
 
-    if(id3v2tag) {
+      ID3v2::Tag *id3v2tag = f->ID3v2Tag();
 
-      cout << "ID3v2."
-           << id3v2tag->header()->majorVersion()
-           << "."
-           << id3v2tag->header()->revisionNumber()
-           << ", "
-           << id3v2tag->header()->tagSize()
-           << " bytes in tag"
-           << endl;
+      if(id3v2tag) {
 
-      ID3v2::FrameList::ConstIterator it = id3v2tag->frameList().begin();
-      for(; it != id3v2tag->frameList().end(); it++)
-        cout << (*it)->frameID() << " - \"" << (*it)->toString() << "\"" << endl;
-    }
-    else
-      cout << "file does not have a valid id3v2 tag" << endl;
+        cout << "ID3v2."
+             << id3v2tag->header()->majorVersion()
+             << "."
+             << id3v2tag->header()->revisionNumber()
+             << ", "
+             << id3v2tag->header()->tagSize()
+             << " bytes in tag"
+             << endl;
 
-    cout << endl << "ID3v1" << endl;
+        ID3v2::FrameList::ConstIterator it = id3v2tag->frameList().begin();
+        for(; it != id3v2tag->frameList().end(); it++)
+          cout << (*it)->frameID() << " - \"" << (*it)->toString() << "\"" << endl;
+      }
+      else
+        cout << "file does not have a valid id3v2 tag" << endl;
 
-    ID3v1::Tag *id3v1tag = f.ID3v1Tag();
+      cout << endl << "ID3v1" << endl;
 
-    if(id3v1tag) {
-      cout << "title   - \"" << id3v1tag->title()   << "\"" << endl;
-      cout << "artist  - \"" << id3v1tag->artist()  << "\"" << endl;
-      cout << "album   - \"" << id3v1tag->album()   << "\"" << endl;
-      cout << "year    - \"" << id3v1tag->year()    << "\"" << endl;
-      cout << "comment - \"" << id3v1tag->comment() << "\"" << endl;
-      cout << "track   - \"" << id3v1tag->track()   << "\"" << endl;
-      cout << "genre   - \"" << id3v1tag->genre()   << "\"" << endl;
-    }
-    else
-      cout << "file does not have a valid id3v1 tag" << endl;
+      ID3v1::Tag *id3v1tag = f->ID3v1Tag();
 
+      if(id3v1tag) {
+        cout << "title   - \"" << id3v1tag->title()   << "\"" << endl;
+        cout << "artist  - \"" << id3v1tag->artist()  << "\"" << endl;
+        cout << "album   - \"" << id3v1tag->album()   << "\"" << endl;
+        cout << "year    - \"" << id3v1tag->year()    << "\"" << endl;
+        cout << "comment - \"" << id3v1tag->comment() << "\"" << endl;
+        cout << "track   - \"" << id3v1tag->track()   << "\"" << endl;
+        cout << "genre   - \"" << id3v1tag->genre()   << "\"" << endl;
+      }
+      else
+        cout << "file does not have a valid id3v1 tag" << endl;
+
+    }
+    else if(dynamic_cast<Ogg::Vorbis::File *>(file.file())) {
+      Ogg::Vorbis::File *f = static_cast<Ogg::Vorbis::File *>(file.file());
+      Ogg::XiphComment *tag = f->tag();
+
+      const Ogg::FieldListMap fields = tag->fieldListMap();
+      for(Ogg::FieldListMap::ConstIterator it = fields.begin(); it != fields.end(); ++it) {
+        cout << (*it).first << " -";
+        StringList values = (*it).second;
+        for(StringList::ConstIterator valueIt = values.begin(); valueIt != values.end(); ++valueIt)
+          cout << " \"" << *valueIt << '"';
+        cout << endl;
+      }
+    }
+    
     cout << endl;
   }
 }
index ae77e37b28c8becc2caa7163a987e08a872e88ab..36b94340a490c6bb8823d74ccf2ce887de378c89 100644 (file)
@@ -54,6 +54,9 @@ public:
   ~FilePrivate()
   {
     delete ID3v1Tag;
+    delete APETag;
+    delete tag;
+    delete ID3v2Header;
     delete properties;
   }
 
@@ -227,7 +230,7 @@ void MPC::File::remove(int tags)
     if(d->APETag)
       d->tag = d->APETag;
     else
-      d->tag = d->APETag = new APE::Tag();
+      d->tag = d->APETag = new APE::Tag;
   }
 
   if(tags & ID3v2) {
@@ -242,7 +245,7 @@ void MPC::File::remove(int tags)
     if(d->ID3v1Tag)
       d->tag = d->ID3v1Tag;
     else
-      d->tag = d->APETag = new APE::Tag();
+      d->tag = d->APETag = new APE::Tag;
   }
 }
 
@@ -284,7 +287,7 @@ void MPC::File::read(bool readProperties, Properties::ReadStyle /* propertiesSty
       if(d->hasAPE)
         d->tag = d->APETag;
       else
-        d->tag = d->APETag = new APE::Tag();
+        d->tag = d->APETag = new APE::Tag;
     }
   }