From: Charlotte Pabst cpabst@codeweavers.com
--- dlls/comdlg32/tests/itemdlg.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/dlls/comdlg32/tests/itemdlg.c b/dlls/comdlg32/tests/itemdlg.c index 00ce13a1be1..3048f2a9760 100644 --- a/dlls/comdlg32/tests/itemdlg.c +++ b/dlls/comdlg32/tests/itemdlg.c @@ -1430,7 +1430,7 @@ static void test_filename_opendlg_(LPCWSTR set_filename, LPCWSTR set_filename2,
if(fs_count) { - hr = IFileOpenDialog_SetFileTypes(pfod, 2, filterspec); + hr = IFileOpenDialog_SetFileTypes(pfod, fs_count, filterspec); ok_(file,line)(hr == S_OK, "SetFileTypes failed: Got 0x%08lx\n", hr); }
@@ -1532,6 +1532,8 @@ static void test_filename(void) static const WCHAR ext2[] = {'*','.','w','t','2',0}; static const WCHAR extdef[] = {'*','.','w','t','e',0}; static const WCHAR complexext[] = {'*','.','w','t','2',';','*','.','w','t','1',0}; + /* 300 chars, to be longer than MAX_PATH=260 */ + static const WCHAR *const long_ext = L"*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;*.wt2;";
static const COMDLG_FILTERSPEC filterspec[] = { { desc1, ext1 }, { desc2, ext2 }, { descdef, extdef } @@ -1539,6 +1541,9 @@ static void test_filename(void) static const COMDLG_FILTERSPEC filterspec2[] = { { desc1, complexext } }; + static const COMDLG_FILTERSPEC filterspec_long[] = { + { desc2, long_ext } + };
/* No extension */ test_filename_savedlg(filename_noextW, NULL, NULL, NULL, 0, 0, filename_noextW); @@ -1562,6 +1567,8 @@ static void test_filename(void) test_filename_savedlg(filename_mixedcaseW, NULL, defextW, filterspec, 0, 0, filename_mixedcaseW); /* Default extension, filterspec with default extension, filename filter */ test_filename_savedlg(filename_noextW, ext2, defextW, filterspec, 3, 0, filename_ext2W); + /* Default extension, filterspec exceeds MAX_PATH */ + test_filename_savedlg(filename_noextW, NULL, defextW, filterspec_long, 1, 0, filename_ext2W);
GetCurrentDirectoryW(MAX_PATH, buf); ok(!!pSHCreateItemFromParsingName, "SHCreateItemFromParsingName is missing.\n"); @@ -1584,6 +1591,9 @@ static void test_filename(void) test_filename_opendlg(filename_noextW, NULL, psi_current, defextW, NULL, 0, 0, filename_defextW); /* IFileOpenDialog, default extension and filename filter, noextW deleted */ test_filename_opendlg(filename_noextW, ext2, psi_current, defextW, NULL, 0, 0, filename_ext2W); + /* IFileOpenDialog, default extension, filterspec exceeds MAX_PATH */ + test_filename_opendlg(filename_noextW, NULL, psi_current, defextW, filterspec_long, 1, 0, filename_ext2W); + if(0) /* Interactive */ { /* IFileOpenDialog, filterspec, no default extension, noextW deleted */