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

Reply via email to