aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorNeil Hodgson <nyamatongwe@gmail.com>2015-10-26 16:14:17 +1100
committerNeil Hodgson <nyamatongwe@gmail.com>2015-10-26 16:14:17 +1100
commita964ac27c1ecb76cdbf09b0b2f386466285533c2 (patch)
tree07360b41ed3216d1e3e252b68b6f64f65510d0ee
parentece8393319c2d51477768224853715cc5ea4b62c (diff)
downloadscintilla-mirror-a964ac27c1ecb76cdbf09b0b2f386466285533c2.tar.gz
Avoid possibility of ScintillaCocoa receiving idles after deallocation by severing the
connection from TimerTarget back to ScintillaCocoa and releasing the notification queue.
-rw-r--r--cocoa/ScintillaCocoa.mm13
1 files changed, 13 insertions, 0 deletions
diff --git a/cocoa/ScintillaCocoa.mm b/cocoa/ScintillaCocoa.mm
index 9cb48e5c8..31538aea4 100644
--- a/cocoa/ScintillaCocoa.mm
+++ b/cocoa/ScintillaCocoa.mm
@@ -334,6 +334,18 @@ const CGFloat paddingHighlightY = 2;
//--------------------------------------------------------------------------------------------------
/**
+ * Method called by owning ScintillaCocoa object when it is destroyed.
+ */
+- (void) ownerDestroyed
+{
+ mTarget = NULL;
+ [notificationQueue release];
+ notificationQueue = nil;
+}
+
+//--------------------------------------------------------------------------------------------------
+
+/**
* Method called by a timer installed by ScintillaCocoa. This two step approach is needed because
* a native Obj-C class is required as target for the timer.
*/
@@ -408,6 +420,7 @@ ScintillaCocoa::ScintillaCocoa(SCIContentView* view, SCIMarginView* viewMargin)
ScintillaCocoa::~ScintillaCocoa()
{
Finalise();
+ [timerTarget ownerDestroyed];
[timerTarget release];
}