win32u: Use user message packing for more messages passing string.

This commit is contained in:
Jacek Caban 2023-07-18 20:34:57 +02:00 committed by Alexandre Julliard
parent 844177d517
commit 216979bd08
3 changed files with 35 additions and 3 deletions

View file

@ -877,7 +877,6 @@ BOOL unpack_message( HWND hwnd, UINT message, WPARAM *wparam, LPARAM *lparam,
case EM_GETLINE:
case EM_SETTABSTOPS:
case LB_SETTABSTOPS:
break;
case CB_ADDSTRING:
case CB_INSERTSTRING:
case CB_FINDSTRING:
@ -888,8 +887,6 @@ BOOL unpack_message( HWND hwnd, UINT message, WPARAM *wparam, LPARAM *lparam,
case LB_FINDSTRING:
case LB_FINDSTRINGEXACT:
case LB_SELECTSTRING:
if (!*buffer) return TRUE;
if (!check_string( *buffer, size )) return FALSE;
break;
case CB_GETLBTEXT:
{
@ -1082,6 +1079,16 @@ BOOL WINAPI User32CallWindowProc( struct win_proc_params *params, ULONG size )
case EM_GETLINE:
case EM_SETTABSTOPS:
case LB_SETTABSTOPS:
case CB_ADDSTRING:
case CB_INSERTSTRING:
case CB_FINDSTRING:
case CB_FINDSTRINGEXACT:
case CB_SELECTSTRING:
case LB_ADDSTRING:
case LB_INSERTSTRING:
case LB_FINDSTRING:
case LB_FINDSTRINGEXACT:
case LB_SELECTSTRING:
{
LRESULT *result_ptr = (LRESULT *)buffer - 1;
*result_ptr = result;

View file

@ -599,6 +599,18 @@ static BOOL unpack_message( HWND hwnd, UINT message, WPARAM *wparam, LPARAM *lpa
if (!*wparam) return TRUE;
minsize = *wparam * sizeof(UINT);
break;
case CB_ADDSTRING:
case CB_INSERTSTRING:
case CB_FINDSTRING:
case CB_FINDSTRINGEXACT:
case CB_SELECTSTRING:
case LB_ADDSTRING:
case LB_INSERTSTRING:
case LB_FINDSTRING:
case LB_FINDSTRINGEXACT:
case LB_SELECTSTRING:
if (!*buffer) return TRUE;
break;
case WM_WINE_SETWINDOWPOS:
{
WINDOWPOS wp;
@ -1356,6 +1368,16 @@ size_t user_message_size( UINT message, WPARAM wparam, LPARAM lparam, BOOL other
case LB_DIR:
case LB_ADDFILE:
case EM_REPLACESEL:
case CB_ADDSTRING:
case CB_INSERTSTRING:
case CB_FINDSTRING:
case CB_FINDSTRINGEXACT:
case CB_SELECTSTRING:
case LB_ADDSTRING:
case LB_INSERTSTRING:
case LB_FINDSTRING:
case LB_FINDSTRINGEXACT:
case LB_SELECTSTRING:
if (other_process && lparam) size = string_size( lparam_ptr, ansi );
break;
case WM_GETMINMAXINFO:

View file

@ -1907,6 +1907,9 @@ static void test_wndproc_hook(void)
{ "LB_ADDFILE", LB_ADDFILE, .lparam = strbufW, .lparam_init_size = sizeof(strbufW) },
{ "EM_REPLACESEL", EM_REPLACESEL, .lparam = strbufW, .lparam_init_size = sizeof(strbufW) },
{ "WM_WININICHANGE", WM_WININICHANGE, .lparam = strbufW, .lparam_init_size = sizeof(strbufW) },
{ "CB_ADDSTRING", CB_ADDSTRING },
{ "CB_INSERTSTRING", CB_INSERTSTRING },
{ "LB_ADDSTRING", LB_ADDSTRING },
/* messages not allowed to be sent by NtUserMessageCall */
{
"WM_DRAWITEM", WM_DRAWITEM, .wparam = 10,