Re-order the base classes to prevent a crash in Linux.

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
This commit is contained in:
Hafiz Abid Qadeer 2014-11-26 10:19:32 +00:00
parent ee5772faaa
commit 05200e3b19
1 changed files with 4 additions and 2 deletions

View File

@ -628,9 +628,11 @@ namespace lldb_private {
bool m_interrupt_exits; bool m_interrupt_exits;
}; };
// The order of base classes is important. Look at the constructor of IOHandlerConfirm
// to see how.
class IOHandlerConfirm : class IOHandlerConfirm :
public IOHandlerEditline, public IOHandlerDelegate,
public IOHandlerDelegate public IOHandlerEditline
{ {
public: public:
IOHandlerConfirm (Debugger &debugger, IOHandlerConfirm (Debugger &debugger,