On WM_GETTEXT, terminate the lparam buffer even if string is empty.

This commit is contained in:
Duane Clark 2002-03-20 01:31:03 +00:00 committed by Alexandre Julliard
parent b4994d18e9
commit f9340ff94d

View File

@ -794,15 +794,19 @@ LRESULT WINAPI DefWindowProcA( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam
break; break;
case WM_GETTEXT: case WM_GETTEXT:
{ if (wParam)
WND *wndPtr = WIN_GetPtr( hwnd );
if (wParam && wndPtr && wndPtr->text)
{ {
LPSTR dest = (LPSTR)lParam; LPSTR dest = (LPSTR)lParam;
WND *wndPtr = WIN_GetPtr( hwnd );
if (!wndPtr) break;
if (wndPtr->text)
{
if (!WideCharToMultiByte( CP_ACP, 0, wndPtr->text, -1, if (!WideCharToMultiByte( CP_ACP, 0, wndPtr->text, -1,
dest, wParam, NULL, NULL )) dest[wParam-1] = 0; dest, wParam, NULL, NULL )) dest[wParam-1] = 0;
result = strlen( dest ); result = strlen( dest );
} }
else dest[0] = '\0';
WIN_ReleasePtr( wndPtr ); WIN_ReleasePtr( wndPtr );
} }
break; break;
@ -928,14 +932,18 @@ LRESULT WINAPI DefWindowProcW(
break; break;
case WM_GETTEXT: case WM_GETTEXT:
{ if (wParam)
WND *wndPtr = WIN_GetPtr( hwnd );
if (wParam && wndPtr && wndPtr->text)
{ {
LPWSTR dest = (LPWSTR)lParam; LPWSTR dest = (LPWSTR)lParam;
WND *wndPtr = WIN_GetPtr( hwnd );
if (!wndPtr) break;
if (wndPtr->text)
{
lstrcpynW( dest, wndPtr->text, wParam ); lstrcpynW( dest, wndPtr->text, wParam );
result = strlenW( dest ); result = strlenW( dest );
} }
else dest[0] = '\0';
WIN_ReleasePtr( wndPtr ); WIN_ReleasePtr( wndPtr );
} }
break; break;