#include <sigc++/sigc++.h>

class Foo
{
public:
	virtual ~Foo() {}
};

class BaseDialog
	: virtual public sigc::trackable
{
public:
	BaseDialog() {}
	virtual ~BaseDialog() {}

	sigc::signal<void> clicked;
};

class SpecificDialog
	: virtual public BaseDialog,
	  public Foo
{
public:
	SpecificDialog(void)
	{
		clicked.connect(sigc::mem_fun(this, &SpecificDialog::OnClicked));
	}

	virtual ~SpecificDialog()
	{
		// This would fix the crash:
		// notify_callbacks();
	}

private:
	void OnClicked(void)
	{
		delete this;
	}
};


int
main(int argc, char **argv)
{
	SpecificDialog *dlg = new SpecificDialog();

	dlg->clicked.emit();

	return 0;
}
