https://bugs.winehq.org/show_bug.cgi?id=53014
--- Comment #10 from jswinebz@kanargh.org.uk --- PS: what exactly was the link to the /tests/ (line 377) code supposed to demonstrate?
358 memset( module, 0xcc, sizeof(module) ); 359 module_str.Buffer = module; 360 module_str.Length = 0xdead; 361 module_str.MaximumLength = sizeof(module); 362 memset( res_buf, 0xcc, sizeof(res_buf) ); 363 res_str.Buffer = res_buf; 364 res_str.Length = 0xdead; 365 res_str.MaximumLength = sizeof(res_buf); 366 ret = NtUserGetIconInfo( handle, &info, &module_str, &res_str, NULL, 0 ); 367 ok( ret, "NtUserGetIconInfo failed: %lu\n", GetLastError() ); 368 ok( info.fIcon == TRUE, "fIcon = %x\n", info.fIcon ); 369 ok( module_str.Length, "module_str.Length = 0\n" ); 370 ok( !res_str.Length, "res_str.Length = %u\n", res_str.Length ); 371 ok( module_str.Buffer == module, "module_str.Buffer = %p\n", module_str.Buffer ); 372 ok( res_str.Buffer == (WCHAR *)IDI_HAND, "res_str.Buffer = %p\n", res_str.Buffer ); 373 DeleteObject( info.hbmColor ); 374 DeleteObject( info.hbmMask ); 375 376 module[module_str.Length] = 0; 377 ok( GetModuleHandleW(module) == GetModuleHandleW(L"user32.dll"), 378 "GetIconInfoEx wrong module %s\n", wine_dbgstr_w(module) );
It certainly doesn't appear to show that "UNICODE_STRING Length handling really uses characters in this case, see related tests" because (well firstly it's not actually true, and...) all we're really showing is that the returned module name length is non-zero (not necessarily the *right* length in any situation), and that an icon loaded from user32.dll is associated with the same DLL as GetModuleHandle for user32.dll... which obviously ought to be true. And doesn't really demonstrate the bug between system and application DLLs.