Commit c95aa822 authored by Mikołaj Zalewski's avatar Mikołaj Zalewski Committed by Alexandre Julliard

comctl32: toolbar: Passing a string pointer in TB_INSERTBUTTON shouldn't change…

comctl32: toolbar: Passing a string pointer in TB_INSERTBUTTON shouldn't change the strings table (with test case).
parent 4cf682b8
...@@ -337,6 +337,7 @@ void test_add_string() ...@@ -337,6 +337,7 @@ void test_add_string()
LPCSTR ret6[] = {"a", "b", "|a|b||", "p", "q", "p", "p", "q", "p", "", "q"}; LPCSTR ret6[] = {"a", "b", "|a|b||", "p", "q", "p", "p", "q", "p", "", "q"};
LPCSTR ret7[] = {"a", "b", "|a|b||", "p", "q", "p", "p", "q", "p", "", "q", "br", "c", "d"}; LPCSTR ret7[] = {"a", "b", "|a|b||", "p", "q", "p", "p", "q", "p", "", "q", "br", "c", "d"};
HWND hToolbar = NULL; HWND hToolbar = NULL;
TBBUTTON button;
int ret; int ret;
rebuild_toolbar(&hToolbar); rebuild_toolbar(&hToolbar);
...@@ -365,6 +366,13 @@ void test_add_string() ...@@ -365,6 +366,13 @@ void test_add_string()
ret = SendMessageA(hToolbar, TB_ADDSTRINGA, (WPARAM)GetModuleHandle(NULL), IDS_TBADD7); ret = SendMessageA(hToolbar, TB_ADDSTRINGA, (WPARAM)GetModuleHandle(NULL), IDS_TBADD7);
ok(ret == 11, "TB_ADDSTRINGA - unexpected return %d\n", ret); ok(ret == 11, "TB_ADDSTRINGA - unexpected return %d\n", ret);
CHECK_STRING_TABLE(14, ret7); CHECK_STRING_TABLE(14, ret7);
ZeroMemory(&button, sizeof(button));
button.iString = (UINT_PTR)"Test";
SendMessageA(hToolbar, TB_INSERTBUTTONA, 0, (LPARAM)&button);
CHECK_STRING_TABLE(14, ret7);
SendMessageA(hToolbar, TB_ADDBUTTONSA, 1, (LPARAM)&button);
CHECK_STRING_TABLE(14, ret7);
} }
START_TEST(toolbar) START_TEST(toolbar)
......
...@@ -3833,22 +3833,6 @@ TOOLBAR_InsertButtonA (HWND hwnd, WPARAM wParam, LPARAM lParam) ...@@ -3833,22 +3833,6 @@ TOOLBAR_InsertButtonA (HWND hwnd, WPARAM wParam, LPARAM lParam)
} else if (nIndex < 0) } else if (nIndex < 0)
return FALSE; return FALSE;
/* If the string passed is not an index, assume address of string
and do our own AddString */
if ((HIWORD(lpTbb->iString) != 0) && (lpTbb->iString != -1)) {
LPSTR ptr;
INT len;
TRACE("string %s passed instead of index, adding string\n",
debugstr_a((LPSTR)lpTbb->iString));
len = strlen((LPSTR)lpTbb->iString) + 2;
ptr = Alloc(len);
strcpy(ptr, (LPSTR)lpTbb->iString);
ptr[len - 1] = 0; /* ended by two '\0' */
lpTbb->iString = TOOLBAR_AddStringA(hwnd, 0, (LPARAM)ptr);
Free(ptr);
}
TRACE("inserting button index=%d\n", nIndex); TRACE("inserting button index=%d\n", nIndex);
if (nIndex > infoPtr->nNumButtons) { if (nIndex > infoPtr->nNumButtons) {
nIndex = infoPtr->nNumButtons; nIndex = infoPtr->nNumButtons;
...@@ -3922,22 +3906,6 @@ TOOLBAR_InsertButtonW (HWND hwnd, WPARAM wParam, LPARAM lParam) ...@@ -3922,22 +3906,6 @@ TOOLBAR_InsertButtonW (HWND hwnd, WPARAM wParam, LPARAM lParam)
} else if (nIndex < 0) } else if (nIndex < 0)
return FALSE; return FALSE;
/* If the string passed is not an index, assume address of string
and do our own AddString */
if ((HIWORD(lpTbb->iString) != 0) && (lpTbb->iString != -1)) {
LPWSTR ptr;
INT len;
TRACE("string %s passed instead of index, adding string\n",
debugstr_w((LPWSTR)lpTbb->iString));
len = strlenW((LPWSTR)lpTbb->iString) + 2;
ptr = Alloc(len*sizeof(WCHAR));
strcpyW(ptr, (LPWSTR)lpTbb->iString);
ptr[len - 1] = 0; /* ended by two '\0' */
lpTbb->iString = TOOLBAR_AddStringW(hwnd, 0, (LPARAM)ptr);
Free(ptr);
}
TRACE("inserting button index=%d\n", nIndex); TRACE("inserting button index=%d\n", nIndex);
if (nIndex > infoPtr->nNumButtons) { if (nIndex > infoPtr->nNumButtons) {
nIndex = infoPtr->nNumButtons; nIndex = infoPtr->nNumButtons;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment