From ec4699bed288ef65d336675b479a28a0b67bf9cf Mon Sep 17 00:00:00 2001 From: Alexander Corrado Date: Thu, 11 Aug 2011 01:59:09 -0400 Subject: [PATCH] Test when an inherited virtual member is overridden and listed in a derived class's interface definition This was causing problems because the method is not repeated in the primary vtable (it shows up in the position expected by the base class), but CppAbi does not know that it is inherited until after the impl has been emitted, so it emits the index that it is listed in the derived class. Note that the generator only does this with virtual destructors (since we never call these virtually). --- tests/Native/InheritanceTests.cpp | 4 ++++ tests/Native/InheritanceTests.h | 1 + 2 files changed, 5 insertions(+) diff --git a/tests/Native/InheritanceTests.cpp b/tests/Native/InheritanceTests.cpp index e1cb201b..15fde36b 100644 --- a/tests/Native/InheritanceTests.cpp +++ b/tests/Native/InheritanceTests.cpp @@ -69,6 +69,10 @@ int ClassThatOverridesStuff::BaseNumber () const { return this->NumberClass::Number (); } +ClassThatOverridesStuff::~ClassThatOverridesStuff () +{ + this->myNum = 0; +} NumberClass* ClassThatOverridesStuff::GetInstance (int num, int my) { return new ClassThatOverridesStuff (num, my); diff --git a/tests/Native/InheritanceTests.h b/tests/Native/InheritanceTests.h index 445ee261..5609a6eb 100644 --- a/tests/Native/InheritanceTests.h +++ b/tests/Native/InheritanceTests.h @@ -50,6 +50,7 @@ protected: public: ClassThatOverridesStuff (int num, int my); virtual int Number () const; + virtual ~ClassThatOverridesStuff (); virtual int BaseNumber () const; static NumberClass* GetInstance (int num, int my); };