Module: wine Branch: master Commit: 59bb622088b967aef7d1cdebe0ac6a2fbd5a84f3 URL: https://source.winehq.org/git/wine.git/?a=commit;h=59bb622088b967aef7d1cdebe... Author: Damjan Jovanovic <damjan.jov(a)gmail.com> Date: Wed Nov 13 05:54:13 2019 +0200 comctl32: Test overwriting of pszText pointer in TVN_ENDLABELEDIT. Signed-off-by: Damjan Jovanovic <damjan.jov(a)gmail.com> Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/comctl32/tests/treeview.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/dlls/comctl32/tests/treeview.c b/dlls/comctl32/tests/treeview.c index 19ba40c64a..82db67d5d0 100644 --- a/dlls/comctl32/tests/treeview.c +++ b/dlls/comctl32/tests/treeview.c @@ -43,6 +43,7 @@ static BOOL g_disp_A_to_W; static BOOL g_disp_set_stateimage; static BOOL g_beginedit_alter_text; static const char *g_endedit_overwrite_contents; +static char *g_endedit_overwrite_ptr; static HFONT g_customdraw_font; static BOOL g_v6; @@ -1329,6 +1330,8 @@ static LRESULT CALLBACK parent_wnd_proc(HWND hWnd, UINT message, WPARAM wParam, todo_wine ok(disp->item.cchTextMax == MAX_PATH, "cchTextMax is %d\n", disp->item.cchTextMax); if (g_endedit_overwrite_contents) strcpy(disp->item.pszText, g_endedit_overwrite_contents); + if (g_endedit_overwrite_ptr) + disp->item.pszText = g_endedit_overwrite_ptr; } return TRUE; } @@ -1739,6 +1742,23 @@ static void test_itemedit(void) expect(TRUE, r); expect(0, strcmp(item.pszText, "<new_contents>")); + /* Overwriting of pszText pointer in TVN_ENDLABELEDIT */ + edit = (HWND)SendMessageA(hTree, TVM_EDITLABELA, 0, (LPARAM)hRoot); + ok(IsWindow(edit), "Expected valid handle\n"); + r = SetWindowTextA(edit, "old"); + expect(TRUE, r); + g_endedit_overwrite_ptr = (char*) "<new_ptr>"; + r = SendMessageA(hTree, WM_COMMAND, MAKEWPARAM(0, EN_KILLFOCUS), (LPARAM)edit); + expect(0, r); + g_endedit_overwrite_ptr = NULL; + item.mask = TVIF_TEXT; + item.hItem = hRoot; + item.pszText = buffA; + item.cchTextMax = ARRAY_SIZE(buffA); + r = SendMessageA(hTree, TVM_GETITEMA, 0, (LPARAM)&item); + expect(TRUE, r); + todo_wine expect(0, strcmp(item.pszText, "<new_ptr>")); + DestroyWindow(hTree); }