From f9340ff94d08800b7aa8d652b343ce413722c079 Mon Sep 17 00:00:00 2001
From: Duane Clark <dclark@akamail.com>
Date: Wed, 20 Mar 2002 01:31:03 +0000
Subject: [PATCH] On WM_GETTEXT, terminate the lparam buffer even if string is
 empty.

---
 windows/defwnd.c | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/windows/defwnd.c b/windows/defwnd.c
index 232a16f76d2..99a8980bf97 100644
--- a/windows/defwnd.c
+++ b/windows/defwnd.c
@@ -794,15 +794,19 @@ LRESULT WINAPI DefWindowProcA( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam
         break;
 
     case WM_GETTEXT:
+        if (wParam)
         {
+            LPSTR dest = (LPSTR)lParam;
             WND *wndPtr = WIN_GetPtr( hwnd );
-            if (wParam && wndPtr && wndPtr->text)
+
+            if (!wndPtr) break;
+            if (wndPtr->text)
             {
-                LPSTR dest = (LPSTR)lParam;
                 if (!WideCharToMultiByte( CP_ACP, 0, wndPtr->text, -1,
                                           dest, wParam, NULL, NULL )) dest[wParam-1] = 0;
                 result = strlen( dest );
             }
+            else dest[0] = '\0';
             WIN_ReleasePtr( wndPtr );
         }
         break;
@@ -928,14 +932,18 @@ LRESULT WINAPI DefWindowProcW(
         break;
 
     case WM_GETTEXT:
+        if (wParam)
         {
+            LPWSTR dest = (LPWSTR)lParam;
             WND *wndPtr = WIN_GetPtr( hwnd );
-            if (wParam && wndPtr && wndPtr->text)
+
+            if (!wndPtr) break;
+            if (wndPtr->text)
             {
-                LPWSTR dest = (LPWSTR)lParam;
                 lstrcpynW( dest, wndPtr->text, wParam );
                 result = strlenW( dest );
             }
+            else dest[0] = '\0';
             WIN_ReleasePtr( wndPtr );
         }
         break;
-- 
GitLab