Authors: Sander van Leeuwen <sandervl@xs4all.nl>, Dietrich Teickner <Dietrich_Teickner@t-online.de> - Fixed incorrect undo buffer size (previous code caused heap corruption when using backspace many times). - Always kill timer when left mouse button is released and in captured state.
diff --git a/controls/edit.c b/controls/edit.c index 66b9874..37f9106 100644 --- a/controls/edit.c +++ b/controls/edit.c
@@ -1747,7 +1747,7 @@ alloc_size = ROUND_TO_GROW((size + 1) * sizeof(WCHAR)); if ((es->undo_text = HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, es->undo_text, alloc_size))) { - es->undo_buffer_size = alloc_size/sizeof(WCHAR); + es->undo_buffer_size = alloc_size/sizeof(WCHAR) - 1; return TRUE; } else @@ -4216,9 +4216,9 @@ */ static LRESULT EDIT_WM_LButtonUp(EDITSTATE *es) { - if (es->bCaptureState && GetCapture() == es->hwndSelf) { + if (es->bCaptureState) { KillTimer(es->hwndSelf, 0); - ReleaseCapture(); + if (GetCapture() == es->hwndSelf) ReleaseCapture(); } es->bCaptureState = FALSE; return 0;