Hi Durk, while trying to analyze the crash I got to the conviction, that the call stack is wrong and points not to the "right" position (there are some inconsistencies in the call stack). I think this is due to the missing debug information in the system libraries. I try to get the error with the debug version over night.
Maik Durk Talsma schrieb am 16.11.2006 22:16: > Hi Maik, > > It looks like I completely overlooked your message yesterday. I've been > playing with your idea a bit. Some more comments below. > > On Wednesday 15 November 2006 19:53, Maik Justus wrote: > >> Hi, >> >> I built a version with debug info only for this file and got, as >> expected, normal performance. >> The problem is in line 807: >> if (i != current) >> I have not much experience with overloaded comparators, but it seems to >> me, that not the "pointers" are compared in this case, but the complete >> > > That is not what is supposed to happen: I'm not comparing whether the two > objects the iterators are pointing to are identical or not, but whether the > two iterators themselves are pointing to the same object. > 'current' is pointing to a valid object (which is established at the > beginning > of the function, and "i" is also pointing to a valid object (because it > iterates between towerController->getActiveTraffic().begin(); and > towerController->getActiveTraffic().end() > > the overloaded object comparison would be something like: > > if ((*current) == (*i)) > > I've added a bool operator == (const FGTrafficRecord &right) const {return id > == right.id;} as you suggested, and added a few debug warning messages to it > to see whether it got called, which it didn't. So, I'm pretty sure that the > code above is actually just comparing whether the two iterators are pointing > to the same object or not. > > >> structure. But "current" holds an invalid pointer in its structure: >> (((*(current)._Myptr).runway))._Bx >> > > I did find out that I never assigned a value to runway, in case of traffic > that is on the ground network (whereas I do assign a runway for traffic that > is waiting for take-off). > > >> I don't know how this can happen, that the string "runway" contains a >> invalid pointer, but this seems to cause the crash. Maybe another >> pointer writing on this pointer? Or did you copy the address of this >> FGTrafficRecord (or of the string runway) and call the destructor? >> > > Hmm, no, not likely: I'm not acessing the runway string other than by copying > a value into it. So assuming stl string has a correct copy constructor, this > should work out okay. > > >> For performance reason I would suggest to add an operator == to class >> FGTrafficRecord, esp.: >> bool operator == (const FGTrafficRecord &right) const {return id == >> right.id;} >> if "id" is sufficient to compare two FGTrafficRecords. >> >> > Yes, that would be sufficient, is you were comparing objects, but here is > really is only comparing pointers. > > Still, the code still seems to crash on your system. so something's gotta be > wrong. > > > Cheers, > Durk > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share your > opinions on IT & business topics through brief surveys - and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > Flightgear-devel mailing list > Flightgear-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/flightgear-devel > > ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ Flightgear-devel mailing list Flightgear-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/flightgear-devel