[prev in list] [next in list] [prev in thread] [next in thread]
List: taglib-devel
Subject: Re: TagLib 1.9.1 crash using C++11
From: Festus Hagen <festushagenlists () yahoo ! com>
Date: 2015-06-22 22:09:37
Message-ID: 1697190877.3565890.1435010977962.JavaMail.yahoo () mail ! yahoo ! com
[Download RAW message or body]
Somehow this got off the list, this re-introduces it back onto the list.
Ibrahim Sha'ath,The code works using GCC c++11 on Windows, FreeBSD and OS X. (That is \
GNU's not Apples ...). However I don't believe the following provides the result \
expected. if(mp4File != NULL){
I suspect the following would.
if(mp4File->isValid()){
If TagLib::FileRef and TagLib::File are not actually used other then to create \
mp4File, The following
TagLib::FileRef *fr = new \
TagLib::FileRef("/Users/ibrahimshaath/Downloads/test.m4a"); TagLib::File *f = \
fr->file(); TagLib::MP4::File *mp4File = dynamic_cast<TagLib::MP4::File*>(f);
can be reduced to
TagLib::MP4::File *mp4File = new \
TagLib::MP4::File("/Users/ibrahimshaath/Downloads/test.m4a");
At this point in time I am still unable to get Clang to build on this OS X10.5.8 box, \
I'm not an Apple person, It was free, it's a dual 2.3Mhz PPC G5, I wanted a Big \
Endian test box, it fit the bill, I think!
Anything more I can do to help, feel free to ask!
-Enjoy
> )_~
________________________________
From: Ibrahim Sha'ath <ibrahimshaath@gmail.com>
To: Festus Hagen <festushagenlists@yahoo.com>
Sent: Sunday, June 21, 2015 4:43 AM
Subject: Re: TagLib 1.9.1 crash using C++11
Hey Festus,
I rewrote this into a sample app so you can see everything that's going on. This \
crashes the same way:
int main() {
TagLib::FileRef *fr = \
newTagLib::FileRef("/Users/ibrahimshaath/Downloads/test.m4a"); TagLib::File *f = \
fr->file(); TagLib::MP4::File *mp4File = dynamic_cast<TagLib::MP4::File*>(f);
TagLib::String key = TagLib::String("\251grp");
if (mp4File != NULL) {
cout << "MP4filefound" << endl;
if(mp4File->tag()->itemListMap().contains(key)) {
TagLib::MP4::Itemi = mp4File->tag()->itemListMap()[key];
TagLib::Stringstr = i.toStringList().front();
cout << "Grouping:" << str.toCString(true) << endl;
}
TagLib::StringList sl(TagLib::String("DATA"));
mp4File->tag()->itemListMap().insert(key, TagLib::MP4::Item(sl));
cout << "Groupingdatainserted" << endl;
mp4File->save();
cout << "Filesaved" << endl;
}
return0;
}
It works if I compile it without C++11. With C++11, it can't read the itemListMap and \
crashes on insert. I haven't had the time to delve into the TagLib codebase and see \
what I might have done wrong, so I really appreciate your help and familiarity with \
the lib.
Best
Ibrahim
On 20 June 2015 at 17:11, Festus Hagen <festushagenlists@yahoo.com> wrote:
Whoops ... I should of been more clear, I didn't expect it to resolve the crash, just \
eliminating the obvious.
> Like I said previously, The example code you provided works as is, even though it's \
> slightly improper.
> The first parameter (the key) is a TagLib::String not a c_string, it behooves you \
> to use proper data types.
> It appears you have an Mp4FileMetadata class with a setGrouping(QString const&) \
> function.
> I assume that is where the snippet of code you posted came from?
> May we see the entire function?
>
>
> Also, You should strip down your code to be as simple as possible and still have \
> the issue, I suspect you have an overrun or the like someplace and this just \
> happens to be where it's getting stepped on ...
> If you want, I'll send/post my test kissapp (and its CMakeLists.txt) so you can try \
> it on your system, it is short, simple and to the point, though not pretty.
> The CMakeLists is hard coded to find TagLib and would need modification to fit your \
> system.
>
> -Enjoy
> > )_~
>
> ________________________________
> From: Ibrahim Sha'ath <ibrahimshaath@gmail.com>
> To: Festus Hagen <festushagenlists@yahoo.com>; taglib-devel@kde.org
> Sent: Friday, June 19, 2015 1:45 PM
>
> Subject: Re: TagLib 1.9.1 crash using C++11
>
>
>
> Unfortunately, that did not prevent the crash, though it did shorten the stack:
>
> 0 ... std::__1::map<TagLib::String, TagLib::MP4::Item, \
> std::__1::less<TagLib::String>, std::__1::allocator<std::__1::pair<TagLib::String \
> const, TagLib::MP4::Item> > >::operator[](TagLib::String const&) + 211 1 ... \
> Mp4FileMetadata::setGrouping(QString const&) + 195
> As it turned out I had already implemented this change in almost every similar \
> method in my app, but not that one! So thanks for pointing it out. I've also tried \
> using a TagLib::String as the map key rather than just the C-string, but to no \
> avail. I didn't notice the MP4::Tag::item property implementation in master, but \
> I'll take another look.
> By any chance does the shorter stack clarify anything?
>
> Thanks again.
>
>
>
>
> On 19 June 2015 at 14:11, Ibrahim Sha'ath <ibrahimshaath@gmail.com> wrote:
>
> Festus, thank you very much. That looks spot on. Let me try it out when I get home.
> >
> >
> > On 19 June 2015 at 01:55, Festus Hagen <festushagenlists@yahoo.com> wrote:
> >
> > Hi,
> > >
> > > The following particulate from your stack trace shows that the second argument \
> > > to insert() is a TagLib::MP4::Item not a TagLib::StringList ...
> > > > insert(TagLib::String const&, TagLib::MP4::Item const&)
> > >
> > > However, I did wrap your sample code with the rest of the necessities and it \
> > > tests fine using GCC c++11 on Windows, FreeBSD and OS X.
> > > I shall try CLang when it's done building ...
> > >
> > > Might I suggest a slight code change: \
> > > mp4File->tag()->itemListMap().insert("\251grp", TagLib::MP4::Item(sl));
> > > TagLib master has new accessors MP4::Tag::item(const String &key) and \
> > > MP4::Tag::setItem(const String &key, const Item &value) for this in the next \
> > > release.
> > > -Enjoy
> > > > )_~
> > > ________________________________
> > > From: Ibrahim Sha'ath <ibrahimshaath@gmail.com>
> > > To: taglib-devel@kde.org
> > > Sent: Thursday, June 11, 2015 2:11 PM
> > > Subject: Re: TagLib 1.9.1 crash using C++11
> > >
> > >
> > >
> > >
> > > Hmmm. taglib2 didn't work either. A simpler stack trace, but looks like the \
> > > same crash essentially:
> > > 0 ... 0x0000000108214283 std::__1::map<TagLib::String, TagLib::MP4::Item, \
> > > std::__1::less<TagLib::String>, \
> > > std::__1::allocator<std::__1::pair<TagLib::String const, TagLib::MP4::Item> > \
> > > >::operator[](TagLib::String const&) + 211 1 ... 0x00000001082132f1 \
> > > > TagLib::Map<TagLib::String, TagLib::MP4::Item>::insert(TagLib::String const&, \
> > > > TagLib::MP4::Item const&) + 97
> > >
> > > Is anyone successfully using the itemListMap with C++11? I can't read from it \
> > > either, though that doesn't crash.
> > >
> > >
> > >
> > >
> > > On 11 June 2015 at 18:33, Ibrahim Sha'ath <ibrahimshaath@gmail.com> wrote:
> > >
> > > Sadly, current master didn't improve matters, so I imagine neither will that \
> > > specific tag.
> > > > I'll try out the v2 branch.
> > > >
> > > >
> > > > On 5 June 2015 at 09:36, Ibrahim Sha'ath <ibrahimshaath@gmail.com> wrote:
> > > >
> > > > Excellent Rob, cheers; I'll definitely check that out.
> > > > >
> > > > >
> > > > > Your email ended up in spam for some reason.
> > > > >
> > > > >
> > > > > On 5 June 2015 at 09:03, Rob Arnold <rob@loci.net> wrote:
> > > > >
> > > > > Same, but with master (specifically v1.9.1-197-g62ab41f), so perhaps a \
> > > > > little closer to 1.9.1 than the taglib2 branch
> > > > > > On OS X 10.10 with Clang, C++11 and 14 options turned on.
> > > > > > My code uses StringList, File:save() and tag(), but doesn't directly use \
> > > > > > itemListMap()
> > > > > >
> > > > > > On Jun 4, 2015, at 7:02 PM, Stephen F. Booth <me@sbooth.org> wrote:
> > > > > > >
> > > > > > > I've used TagLib and C++11 successfully together, however I used the \
> > > > > > > taglib2 branch and not the 1.9.1 release. Some of my classes using \
> > > > > > > TagLib are at \
> > > > > > > https://github.com/sbooth/SFBAudioEngine/tree/master/Metadata if you'd \
> > > > > > > like to take a look.
> > > > > > >
> > > > > > > Stephen
> > > > > > >
> > > > > > >
> > > > > > > On Wed, Jun 3, 2015 at 8:45 AM, Ibrahim Sha'ath \
> > > > > > > <ibrahimshaath@gmail.com> wrote:
> > > > > > > If no-one has any idea about this issue specifically, has anyone \
> > > > > > > successfully used C++11 for a TagLib 1.9.1 project?
> > > > > >
> > > > > > _______________________________________________
> > > > > > taglib-devel mailing list
> > > > > > taglib-devel@kde.org
> > > > > > https://mail.kde.org/mailman/listinfo/taglib-devel
> > > > > >
> > > > > >
> > > > >
> > > >
> > >
> > >
> > > _______________________________________________
> > > taglib-devel mailing list
> > > taglib-devel@kde.org
> > > https://mail.kde.org/mailman/listinfo/taglib-devel
> > > _______________________________________________
> > > taglib-devel mailing list
> > > taglib-devel@kde.org
> > > https://mail.kde.org/mailman/listinfo/taglib-devel
> > >
> >
>
_______________________________________________
taglib-devel mailing list
taglib-devel@kde.org
https://mail.kde.org/mailman/listinfo/taglib-devel
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic