In the initialization list of IOHandlerConfirm, *this is basically casting
IOHandlerConfirm to its base IOHandlerDelegate and passing it to constructor of
IOHandlerEditline which uses it and crashes as constructor of IOHandlerDelegate
is still not called. Re-ordering the base classes makes sure that constructor of
IOHandlerDelegate runs first.
It would be good to have a test case for this case too.
llvm-svn: 222816
bool m_interrupt_exits;
};
+ // The order of base classes is important. Look at the constructor of IOHandlerConfirm
+ // to see how.
class IOHandlerConfirm :
- public IOHandlerEditline,
- public IOHandlerDelegate
+ public IOHandlerDelegate,
+ public IOHandlerEditline
{
public:
IOHandlerConfirm (Debugger &debugger,