Module: wine Branch: master Commit: d2daa384e96e21659cc33354f4d622a6224ae889 URL: http://source.winehq.org/git/wine.git/?a=commit;h=d2daa384e96e21659cc33354f4...
Author: Francois Gouget fgouget@free.fr Date: Sat Jan 6 19:24:06 2007 +0100
shell32/tests: Hack SHGetFileInfo() so it does not crash and add a test for it.
---
dlls/shell32/shell32_main.c | 8 ++++++++ dlls/shell32/tests/shlfileop.c | 22 ++++++++++++++++++++++ 2 files changed, 30 insertions(+), 0 deletions(-)
diff --git a/dlls/shell32/shell32_main.c b/dlls/shell32/shell32_main.c index 797f98e..476a4ae 100644 --- a/dlls/shell32/shell32_main.c +++ b/dlls/shell32/shell32_main.c @@ -356,6 +356,14 @@ DWORD_PTR WINAPI SHGetFileInfoW(LPCWSTR (flags & (SHGFI_ATTRIBUTES|SHGFI_EXETYPE|SHGFI_PIDL))) return FALSE;
+ if ( (flags & SHGFI_USEFILEATTRIBUTES) && + (flags & (SHGFI_ICONLOCATION | SHGFI_ICON | SHGFI_SYSICONINDEX)) ) + { + FIXME("This combination of flags is not supported yet\n"); + /* And it would cause a crash, so return false instead */ + return FALSE; + } + /* windows initializes these values regardless of the flags */ if (psfi != NULL) { diff --git a/dlls/shell32/tests/shlfileop.c b/dlls/shell32/tests/shlfileop.c index c016b56..c6d8004 100644 --- a/dlls/shell32/tests/shlfileop.c +++ b/dlls/shell32/tests/shlfileop.c @@ -111,6 +111,26 @@ static void clean_after_shfo_tests(void) RemoveDirectoryA("nonexistent"); }
+ +static void test_get_file_info(void) +{ + DWORD rc; + SHFILEINFO shfi; + + strcpy(shfi.szDisplayName, "dummy"); + shfi.iIcon=0xdeadbeef; + rc=SHGetFileInfoA("c:\nonexistent", FILE_ATTRIBUTE_DIRECTORY, + &shfi, sizeof(shfi), + SHGFI_ICONLOCATION | SHGFI_USEFILEATTRIBUTES); + todo_wine ok(rc, "SHGetFileInfoA(c:\nonexistent) returned %d\n", rc); + if (rc) + { + ok(strcpy(shfi.szDisplayName, "dummy") != 0, "SHGetFileInfoA(c:\nonexistent) displayname is not set\n"); + ok(shfi.iIcon != 0xdeadbeef, "SHGetFileInfoA(c:\nonexistent) iIcon is not set\n"); + } +} + + /* puts into the specified buffer file names with current directory. files - string with file names, separated by null characters. Ends on a double @@ -855,6 +875,8 @@ START_TEST(shlfileop)
clean_after_shfo_tests();
+ test_get_file_info(); + init_shfo_tests(); test_delete(); clean_after_shfo_tests();