woody@truebalt.caltech.edu (William Edward Woody) (12/09/90)
I am sorry if I'm not posting this to the correct newsgroup. I'm also sorry if this bug has been previously found and noted. The following segment of C++ code will crash my MPW C++ (v3.1) compiler consistantly, with both the MPW C v3.1 C compiler and the MPW C v3.2b1 C compiler (provided with the C++ 3.1 distribution). Both times the compiler crashes by either hanging the system or generating an address error in the C compiler. (!) I believe what is happening is that the C++ v3.1 compiler is generating incorrect C code, but I haven't bothered to look at the generated code to see what's going on. /************************************************/ /* */ /* This crashes the MPW C++ v3.1 compiler */ /* when ran with either the MPW C v3.1 or the */ /* MPW C v3.2b1 compilers. This test was ran */ /* under the MPW v3.1 shell. */ /* */ /************************************************/ class a { public: virtual ~a(); }; class b : public a { }; class c : public b { }; class d : public c { }; class e : public d { ~e(); }; e::~e() // <-- bombs here. { } /************************************************/ Note that if you make class 'e' a child of class 'c' the compiler doesn't die. The only workaround I can come up with right now is to create explicit destructors for all the classes 'b' through 'd'; this seems to work. Oh, by the way, I'm using the following (report samari-zed from the MacEnvy CDEV: Mac II with 8 megabytes RAM, 68851 installed. Using System 6.0.4, with Multifinder (v 6.1b9) active. And I'm using the following Inits: (from INIT CDEV v2.0) Init Tracker Gatekeeper Aid Gatekeeper Daylight FaxMonitor (for the Dove Fax haning off my system) Programmer's Key SUM Shield INIT SuperClock! ~ATM (version 2.0) -- Adobe's Type Manager Hope this helps any unwary C++ programmers out there... -- Bill -- William Edward Woody | Disclamer: USNAIL P.O.Box 50986; Pasadena, CA 91115 | EMAIL woody@tybalt.caltech.edu | The useful stuff in this message ICBM 34 08' 44''N x 118 08' 41''W | was only line noise.