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;
};
// 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,