Csaba Halász wrote: > Hi! > > The copy constructor in question: > > 145 FGEnvironment::FGEnvironment (const FGEnvironment &env) > 146 { > 147 FGEnvironment(); > 148 copy(env); > 149 } > > I guess that wants to call the default constructor first. However, > that doesn't work. See > http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.3 for details. > > Confirmation: > > Breakpoint 1, FGEnvironment (this=0x7fff1913c590, e...@0xc913dc0) at > src/Environment/environment.cxx:147 > 147 FGEnvironment(); > (gdb) s > FGEnvironment (this=0x7fff1913c490) at src/Environment/environment.cxx:138 > 138 altitude_tropo_top_m(10000) > > Observe, that the "this" pointer is different, it is pointing to a new > temporary object that will be destructed immediately after the call: > > (gdb) s > ~FGEnvironment (this=0x7fff1913c490) at src/Environment/environment.cxx:151 > 151 FGEnvironment::~FGEnvironment() > > This is trivial to fix, except it is not obvious whether the members > missing from the copy() function are missing deliberately. Also > unclear: do we really want to call the functions in the default > constructor *before* the copy? > > @timoore: See? Old bugs do exist! The correct way to do this was > "optimized" into the bad code more than 5.5 years ago, in rev 1.4. But > it is bad nevertheless :) > Yeah, ancient history, especially that you can still build, is extremely useful. Tim
------------------------------------------------------------------------------ This SF.net email is sponsored by: SourcForge Community SourceForge wants to tell your story. http://p.sf.net/sfu/sf-spreadtheword _______________________________________________ Flightgear-devel mailing list Flightgear-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/flightgear-devel