summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/gui_w48.c13
-rw-r--r--src/if_ole.cpp8
-rw-r--r--src/version.c2
3 files changed, 19 insertions, 4 deletions
diff --git a/src/gui_w48.c b/src/gui_w48.c
index 4de0c763..76ed6b79 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 b2057f97..fc3077df 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 b04c8816..ff771c97 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,