diff options
-rw-r--r-- | win32/ScintillaWin.cxx | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/win32/ScintillaWin.cxx b/win32/ScintillaWin.cxx index d620f76ff..ae30b9a4d 100644 --- a/win32/ScintillaWin.cxx +++ b/win32/ScintillaWin.cxx @@ -156,6 +156,7 @@ class ScintillaWin : CLIPFORMAT cfColumnSelect; + HRESULT hrOle; DropSource ds; DataObject dob; DropTarget dt; @@ -293,6 +294,8 @@ ScintillaWin::ScintillaWin(HWND hwnd) { cfColumnSelect = static_cast<CLIPFORMAT>( ::RegisterClipboardFormat(TEXT("MSDEVColumnSelect"))); + hrOle = E_FAIL; + wMain = hwnd; dob.sci = this; @@ -312,7 +315,7 @@ void ScintillaWin::Initialise() { // Initialize COM. If the app has already done this it will have // no effect. If the app hasnt, we really shouldnt ask them to call // it just so this internal feature works. - ::OleInitialize(NULL); + hrOle = ::OleInitialize(NULL); } void ScintillaWin::Finalise() { @@ -321,7 +324,9 @@ void ScintillaWin::Finalise() { SetIdle(false); DestroySystemCaret(); ::RevokeDragDrop(MainHWND()); - ::OleUninitialize(); + if (SUCCEEDED(hrOle)) { + ::OleUninitialize(); + } } HWND ScintillaWin::MainHWND() { |