From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17946 invoked by alias); 23 Jan 2003 07:06:00 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 17901 invoked by uid 71); 23 Jan 2003 07:06:00 -0000 Resent-Date: 23 Jan 2003 07:06:00 -0000 Resent-Message-ID: <20030123070600.17899.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, snyder@fnal.gov Received: (qmail 16036 invoked from network); 23 Jan 2003 07:00:54 -0000 Received: from unknown (HELO d0sgibnl1.fnal.gov) (131.225.226.68) by 172.16.49.205 with SMTP; 23 Jan 2003 07:00:54 -0000 Received: from localhost (snyder@localhost) by d0sgibnl1.fnal.gov (SGI-8.9.3/8.9.3) with SMTP id BAA06820 for ; Thu, 23 Jan 2003 01:00:16 -0600 (CST) Message-Id: <200301230700.BAA06820@d0sgibnl1.fnal.gov> Date: Thu, 23 Jan 2003 07:06:00 -0000 From: snyder@fnal.gov Reply-To: snyder@fnal.gov To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: 3.113 Subject: c++/9415: g++ 3.4: can't call base class's virtual function X-SW-Source: 2003-01/txt/msg01346.txt.bz2 List-Id: >Number: 9415 >Category: c++ >Synopsis: g++ 3.4: can't call base class's virtual function >Confidential: no >Severity: critical >Priority: medium >Responsible: unassigned >State: open >Class: wrong-code >Submitter-Id: net >Arrival-Date: Thu Jan 23 07:06:00 UTC 2003 >Closed-Date: >Last-Modified: >Originator: scott snyder >Release: 3.4 20030121 (experimental) >Organization: >Environment: System: Linux karma 2.4.19-emp_2419p5a829i #1 Tue Sep 3 17:42:17 EST 2002 i686 unknown Architecture: i686 host: i686-pc-linux-gnu build: i686-pc-linux-gnu target: i686-pc-linux-gnu configured with: ../gcc/configure --prefix=/usr/local/gcc --enable-threads=posix --enable-long-long >Description: In the program below, the call to d0_Object::activate() does not call the method requested. Instead, it does a virtual call to activate() --- meaning that this program, when run, goes into an infinite recursion. If i change it so that d0_DBObject is not a template class, then the program behaves as expected. $ g++ -o x x.cc $ ./x act act act act act act act ... and so on ... >How-To-Repeat: ---------------------- extern "C" int printf (...); struct d0_Object { virtual void activate() {} }; template struct d0_DBObject : public d0_Object { void activate() { printf ("act\n"); d0_Object::activate();} }; int main () { d0_DBObject x; x.activate(); return 0; } ---------------------- >Fix: >Release-Note: >Audit-Trail: >Unformatted: