From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 365 invoked by alias); 20 Aug 2005 02:43:56 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 32757 invoked by uid 48); 20 Aug 2005 02:43:18 -0000 Date: Sat, 20 Aug 2005 04:33:00 -0000 Message-ID: <20050820024318.32756.qmail@sourceware.org> From: "pinskia at gcc dot gnu dot org" To: gcc-bugs@gcc.gnu.org In-Reply-To: <20040423110112.15097.wolfgang.roehrl@gi-de.com> References: <20040423110112.15097.wolfgang.roehrl@gi-de.com> Reply-To: gcc-bugzilla@gcc.gnu.org Subject: [Bug c++/15097] code generator problem with ::delete and multiple inheritance and virtual deconstructs X-Bugzilla-Reason: CC X-SW-Source: 2005-08/txt/msg02312.txt.bz2 List-Id: ------- Additional Comments From pinskia at gcc dot gnu dot org 2005-08-20 02:43 ------- Here is a self contained testcase for this: struct B1 { virtual ~B1 () throw(){} B1 (){} int x; }; struct B2 { virtual ~B2 () throw(){} B2 (){} int x; }; struct D : B1, B2 { D (){} ~D () throw(){} int y; }; void f1 (D*); void f2 (B2*); void f3 (B1*); int main (void) { f1 (::new D); f2 (::new D); f3 (::new D); } void f1 (D* p) { ::delete p; } void f2 (B2* p) { ::delete p; } void f3 (B1* p) { ::delete p; } With gcc, I get: free(): invalid pointer 0x9317010! -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15097