# HG changeset patch # User Neil Hodgson # Date 1492240107 -36000 # Node ID a80a6876c301ec0caf29ef20eb2161f6af9a8552 # Parent 044d2d0302639d08d3e0aa72886afcbd47fa39f8 Avoid calling virtual functions in destructor. Mark overridden methods. diff -r 044d2d030263 -r a80a6876c301 cocoa/ScintillaCocoa.h --- a/cocoa/ScintillaCocoa.h Sat Apr 15 16:47:52 2017 +1000 +++ b/cocoa/ScintillaCocoa.h Sat Apr 15 17:08:27 2017 +1000 @@ -129,7 +129,6 @@ void Redraw() override; void Init(); - void Finalise() override; CaseFolder *CaseFolderForEncoding() override; std::string CaseMapString(const std::string &s, int caseMapping) override; void CancelModes() override; @@ -137,6 +136,7 @@ public: ScintillaCocoa(ScintillaView* sciView_, SCIContentView* viewContent, SCIMarginView* viewMargin); ~ScintillaCocoa() override; + void Finalise() override; void SetDelegate(id delegate_); void RegisterNotifyCallback(intptr_t windowid, SciNotifyFunc callback); diff -r 044d2d030263 -r a80a6876c301 cocoa/ScintillaCocoa.mm --- a/cocoa/ScintillaCocoa.mm Sat Apr 15 16:47:52 2017 +1000 +++ b/cocoa/ScintillaCocoa.mm Sat Apr 15 17:08:27 2017 +1000 @@ -429,7 +429,6 @@ ScintillaCocoa::~ScintillaCocoa() { - Finalise(); [timerTarget ownerDestroyed]; [timerTarget release]; } diff -r 044d2d030263 -r a80a6876c301 cocoa/ScintillaView.mm --- a/cocoa/ScintillaView.mm Sat Apr 15 16:47:52 2017 +1000 +++ b/cocoa/ScintillaView.mm Sat Apr 15 17:08:27 2017 +1000 @@ -1559,6 +1559,7 @@ - (void) dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; + mBackend->Finalise(); delete mBackend; mBackend = NULL; mContent.owner = nil; diff -r 044d2d030263 -r a80a6876c301 src/ScintillaBase.h --- a/src/ScintillaBase.h Sat Apr 15 16:47:52 2017 +1000 +++ b/src/ScintillaBase.h Sat Apr 15 17:08:27 2017 +1000 @@ -60,12 +60,12 @@ ScintillaBase(); virtual ~ScintillaBase(); void Initialise() {} - virtual void Finalise(); + void Finalise(); - virtual void AddCharUTF(const char *s, unsigned int len, bool treatAsDBCS=false); + void AddCharUTF(const char *s, unsigned int len, bool treatAsDBCS=false); void Command(int cmdId); - virtual void CancelModes(); - virtual int KeyCommand(unsigned int iMessage); + void CancelModes(); + int KeyCommand(unsigned int iMessage); void AutoCompleteInsert(Sci::Position startPos, int removeLen, const char *text, int textLen); void AutoCompleteStart(int lenEntered, const char *list); @@ -87,16 +87,16 @@ bool ShouldDisplayPopup(Point ptInWindowCoordinates) const; void ContextMenu(Point pt); - virtual void ButtonDownWithModifiers(Point pt, unsigned int curTime, int modifiers); - virtual void ButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, bool alt); - virtual void RightButtonDownWithModifiers(Point pt, unsigned int curTime, int modifiers); + void ButtonDownWithModifiers(Point pt, unsigned int curTime, int modifiers); + void ButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, bool alt); + void RightButtonDownWithModifiers(Point pt, unsigned int curTime, int modifiers); - void NotifyStyleToNeeded(Sci::Position endStyleNeeded); - void NotifyLexerChanged(Document *doc, void *userData); + void NotifyStyleToNeeded(Sci::Position endStyleNeeded); + void NotifyLexerChanged(Document *doc, void *userData); public: // Public so scintilla_send_message can use it - virtual sptr_t WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam); + sptr_t WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam); }; #ifdef SCI_NAMESPACE