diff options
-rw-r--r-- | src/gui_w48.c | 13 | ||||
-rw-r--r-- | src/if_ole.cpp | 8 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 19 insertions, 4 deletions
diff --git a/src/gui_w48.c b/src/gui_w48.c index 4de0c7639..76ed6b79d 100644 --- a/src/gui_w48.c +++ b/src/gui_w48.c @@ -1663,8 +1663,17 @@ process_message(void) if (msg.message == WM_OLE) { char_u *str = (char_u *)msg.lParam; - add_to_input_buf(str, (int)STRLEN(str)); - vim_free(str); + if (str == NULL || *str == NUL) + { + /* Message can't be ours, forward it. Fixes problem with Ultramon + * 3.0.4 */ + DispatchMessage(&msg); + } + else + { + add_to_input_buf(str, (int)STRLEN(str)); + vim_free(str); /* was allocated in CVim::SendKeys() */ + } return; } #endif diff --git a/src/if_ole.cpp b/src/if_ole.cpp index b2057f973..fc3077dfe 100644 --- a/src/if_ole.cpp +++ b/src/if_ole.cpp @@ -353,9 +353,13 @@ CVim::SendKeys(BSTR keys) } /* Pass the string to the main input loop. The memory will be freed when - * the message is processed. + * the message is processed. Except for an empty message, we don't need + * to post it then. */ - PostMessage(NULL, WM_OLE, 0, (LPARAM)str); + if (*str == NUL) + vim_free(str); + else + PostMessage(NULL, WM_OLE, 0, (LPARAM)str); return S_OK; } diff --git a/src/version.c b/src/version.c index b04c88168..ff771c97c 100644 --- a/src/version.c +++ b/src/version.c @@ -677,6 +677,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 89, +/**/ 88, /**/ 87, |