diff options
author | wolfbeast <mcwerewolf@gmail.com> | 2018-02-07 21:36:37 +0100 |
---|---|---|
committer | wolfbeast <mcwerewolf@gmail.com> | 2018-02-07 21:36:37 +0100 |
commit | d773eca3316f2c99db9a1dd77929bcbd157eeacb (patch) | |
tree | be0efc8413575e2db60480a9ba5991261929b144 /editor/libeditor/EditorBase.cpp | |
parent | 1e55a5d9188b87da8632e217b238838effb1cdeb (diff) | |
download | UXP-d773eca3316f2c99db9a1dd77929bcbd157eeacb.tar UXP-d773eca3316f2c99db9a1dd77929bcbd157eeacb.tar.gz UXP-d773eca3316f2c99db9a1dd77929bcbd157eeacb.tar.lz UXP-d773eca3316f2c99db9a1dd77929bcbd157eeacb.tar.xz UXP-d773eca3316f2c99db9a1dd77929bcbd157eeacb.zip |
Edit transactions should store their editor instance with strong reference
Edit transactions should store their editor instance with a strong reference, and they should be released when the editor is destroyed.
Diffstat (limited to 'editor/libeditor/EditorBase.cpp')
-rw-r--r-- | editor/libeditor/EditorBase.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/editor/libeditor/EditorBase.cpp b/editor/libeditor/EditorBase.cpp index 13505b2d3..b793f39b8 100644 --- a/editor/libeditor/EditorBase.cpp +++ b/editor/libeditor/EditorBase.cpp @@ -466,6 +466,13 @@ EditorBase::PreDestroy(bool aDestroyingFrames) mSpellcheckCheckboxState = eTriUnset; mRootElement = nullptr; + // Transaction may grab this instance. Therefore, they should be released + // here for stopping the circular reference with this instance. + if (mTxnMgr) { + mTxnMgr->Clear(); + mTxnMgr = nullptr; + } + mDidPreDestroy = true; return NS_OK; } |