$ cat >test.cxx 

struct base
{
};

struct derived : virtual base
{
};


struct base_parser
{
  virtual base*
  top () = 0;
};


struct derived_parser : virtual base_parser
{
  virtual derived*
  top ()
  {
    return 0;
    //return new derived;
  }
};

int
main ()
{
  base_parser* p = new derived_parser;
  base* b = p->top ();
}

$ g++-3.4 test.cxx 
bash-2.05a$ ./a.out 
Segmentation fault

-- 
           Summary: zero covarian return pointer adjustment results in
                    segfault
           Product: gcc
           Version: 3.4.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: boris at kolpackov dot net
                CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: i686-linux-gnu
  GCC host triplet: i686-linux-gnu
GCC target triplet: i686-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18098

Reply via email to