TagLib::MPEG::File destructor not happy?

Dave Wiard lists at wiard.net
Fri Apr 7 06:56:57 CEST 2006

I've been trying to figure out how to get ahold of some ID3v2 tags that
are not accessible via the high-level "get" functions. I've been pouring
over the online doc and so far this chunk of code is the only one I've
seen that looks right:

 TagLib::MPEG::File f("foo.mp3");
 if(f.ID3v2Tag()) {
   TagLib::ID3v2::FrameList l = f.ID3v2Tag()->frameListMap()["TBPM"];
     std::cout << l.front().toString() << std::endl;

I took this directly from the online doc. I'm running version 1.4 and I
have two problems:

1) This code does not compile. The compiler does not like .toString().

2) This code, when incorporated into my Qt app with only three changes
(TBPM -> TALB, truncate .toString(), and load my own file not foo.mp3),
generates the abort below (I think) when "f" is destroyed as the code
passes out of scope.

*** glibc detected *** free(): invalid pointer: 0x0000000000744c68 ***

Can someone give me some hints on how to debug this? I can provide a
backtrace from gdb if needs be. I'm not too strong with C++ but I can
figure most things out with some guidance.


More information about the taglib-devel mailing list