Wine-Devel
By thread
wine-devel@list.winehq.org
By month
Messages by month
- ----- 2026 -----
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2003 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2002 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2001 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
July 2022
- 51 participants
- 1216 messages
Re: [PATCH v4 08/11] mciqtz32: Correct initial video window dimensions.
by Marvin
Hi,
It looks like your patch introduced the new failures shown below.
Please investigate and fix them before resubmitting your patch.
If they are not new, fixing them anyway would help a lot. Otherwise
please ask for the known failures list to be updated.
The full results can be found at:
https://testbot.winehq.org/JobDetails.pl?Key=120080
Your paranoid android.
=== w7u_2qxl (32 bit report) ===
winmm:
mci.c:1600: Test failed: 0: window rectangle doesn't match, expected (150,150)-(286,212), got (150,150)-(282,212)
mci.c:1600: Test failed: 1: window rectangle doesn't match, expected (25,25)-(161,87), got (25,25)-(157,87)
mci.c:1600: Test failed: 2: window rectangle doesn't match, expected (100,100)-(236,162), got (100,100)-(232,162)
mci.c:1600: Test failed: 3: window rectangle doesn't match, expected (0,0)-(136,62), got (0,0)-(132,62)
mci.c:1600: Test failed: 4: window rectangle doesn't match, expected (25,25)-(161,87), got (25,25)-(157,87)
mci.c:1600: Test failed: 5: window rectangle doesn't match, expected (1,1)-(137,63), got (1,1)-(133,63)
=== w7u_adm (32 bit report) ===
winmm:
mci.c:1600: Test failed: 0: window rectangle doesn't match, expected (100,100)-(236,162), got (100,100)-(232,162)
mci.c:1600: Test failed: 1: window rectangle doesn't match, expected (175,175)-(311,237), got (175,175)-(307,237)
mci.c:1600: Test failed: 2: window rectangle doesn't match, expected (75,75)-(211,137), got (75,75)-(207,137)
mci.c:1600: Test failed: 3: window rectangle doesn't match, expected (0,0)-(136,62), got (0,0)-(132,62)
mci.c:1600: Test failed: 4: window rectangle doesn't match, expected (25,25)-(161,87), got (25,25)-(157,87)
mci.c:1600: Test failed: 5: window rectangle doesn't match, expected (1,1)-(137,63), got (1,1)-(133,63)
=== w7u_el (32 bit report) ===
winmm:
mci.c:1600: Test failed: 0: window rectangle doesn't match, expected (75,75)-(211,137), got (75,75)-(207,137)
mci.c:1600: Test failed: 1: window rectangle doesn't match, expected (150,150)-(286,212), got (150,150)-(282,212)
mci.c:1600: Test failed: 2: window rectangle doesn't match, expected (25,25)-(161,87), got (25,25)-(157,87)
mci.c:1600: Test failed: 3: window rectangle doesn't match, expected (0,0)-(136,62), got (0,0)-(132,62)
mci.c:1600: Test failed: 4: window rectangle doesn't match, expected (150,150)-(286,212), got (150,150)-(282,212)
mci.c:1600: Test failed: 5: window rectangle doesn't match, expected (1,1)-(137,63), got (1,1)-(133,63)
=== w8 (32 bit report) ===
winmm:
mci.c:1600: Test failed: 0: window rectangle doesn't match, expected (156,156)-(292,219), got (156,156)-(296,219)
mci.c:1600: Test failed: 1: window rectangle doesn't match, expected (52,52)-(188,115), got (52,52)-(192,115)
mci.c:1600: Test failed: 2: window rectangle doesn't match, expected (130,130)-(266,193), got (130,130)-(270,193)
mci.c:1600: Test failed: 3: window rectangle doesn't match, expected (0,0)-(136,63), got (0,0)-(140,63)
mci.c:1600: Test failed: 4: window rectangle doesn't match, expected (78,78)-(214,141), got (78,78)-(218,141)
mci.c:1600: Test failed: 5: window rectangle doesn't match, expected (1,1)-(137,64), got (1,1)-(141,64)
=== w8adm (32 bit report) ===
winmm:
mci.c:1600: Test failed: 0: window rectangle doesn't match, expected (26,26)-(162,89), got (26,26)-(166,89)
mci.c:1600: Test failed: 1: window rectangle doesn't match, expected (78,78)-(214,141), got (78,78)-(218,141)
mci.c:1600: Test failed: 2: window rectangle doesn't match, expected (156,156)-(292,219), got (156,156)-(296,219)
mci.c:1600: Test failed: 3: window rectangle doesn't match, expected (0,0)-(136,63), got (0,0)-(140,63)
mci.c:1600: Test failed: 4: window rectangle doesn't match, expected (104,104)-(240,167), got (104,104)-(244,167)
mci.c:1600: Test failed: 5: window rectangle doesn't match, expected (1,1)-(137,64), got (1,1)-(141,64)
=== w864 (32 bit report) ===
winmm:
mci.c:1600: Test failed: 0: window rectangle doesn't match, expected (156,156)-(292,219), got (156,156)-(296,219)
mci.c:1600: Test failed: 1: window rectangle doesn't match, expected (52,52)-(188,115), got (52,52)-(192,115)
mci.c:1600: Test failed: 2: window rectangle doesn't match, expected (130,130)-(266,193), got (130,130)-(270,193)
mci.c:1600: Test failed: 3: window rectangle doesn't match, expected (0,0)-(136,63), got (0,0)-(140,63)
mci.c:1600: Test failed: 4: window rectangle doesn't match, expected (78,78)-(214,141), got (78,78)-(218,141)
mci.c:1600: Test failed: 5: window rectangle doesn't match, expected (1,1)-(137,64), got (1,1)-(141,64)
=== w864 (64 bit report) ===
winmm:
mci.c:1600: Test failed: 0: window rectangle doesn't match, expected (156,156)-(292,219), got (156,156)-(296,219)
mci.c:1600: Test failed: 1: window rectangle doesn't match, expected (52,52)-(188,115), got (52,52)-(192,115)
mci.c:1600: Test failed: 2: window rectangle doesn't match, expected (130,130)-(266,193), got (130,130)-(270,193)
mci.c:1600: Test failed: 3: window rectangle doesn't match, expected (0,0)-(136,63), got (0,0)-(140,63)
mci.c:1600: Test failed: 4: window rectangle doesn't match, expected (78,78)-(214,141), got (78,78)-(218,141)
mci.c:1600: Test failed: 5: window rectangle doesn't match, expected (1,1)-(137,64), got (1,1)-(141,64)
July 28, 2022
Re: [PATCH v4 07/11] mciqtz32: Fix MCI_DGV_WHERE_WINDOW behavior.
by Marvin
Hi,
It looks like your patch introduced the new failures shown below.
Please investigate and fix them before resubmitting your patch.
If they are not new, fixing them anyway would help a lot. Otherwise
please ask for the known failures list to be updated.
The full results can be found at:
https://testbot.winehq.org/JobDetails.pl?Key=120079
Your paranoid android.
=== w7u_2qxl (32 bit report) ===
winmm:
mci.c:1600: Test failed: 0: window rectangle doesn't match, expected (150,150)-(286,212), got (150,150)-(282,212)
mci.c:1600: Test failed: 1: window rectangle doesn't match, expected (25,25)-(161,87), got (25,25)-(157,87)
mci.c:1600: Test failed: 2: window rectangle doesn't match, expected (100,100)-(236,162), got (100,100)-(232,162)
mci.c:1600: Test failed: 3: window rectangle doesn't match, expected (0,0)-(136,62), got (0,0)-(132,62)
mci.c:1600: Test failed: 4: window rectangle doesn't match, expected (25,25)-(161,87), got (25,25)-(157,87)
mci.c:1600: Test failed: 5: window rectangle doesn't match, expected (1,1)-(137,63), got (1,1)-(133,63)
=== w7u_adm (32 bit report) ===
winmm:
mci.c:1600: Test failed: 0: window rectangle doesn't match, expected (100,100)-(236,162), got (100,100)-(232,162)
mci.c:1600: Test failed: 1: window rectangle doesn't match, expected (175,175)-(311,237), got (175,175)-(307,237)
mci.c:1600: Test failed: 2: window rectangle doesn't match, expected (75,75)-(211,137), got (75,75)-(207,137)
mci.c:1600: Test failed: 3: window rectangle doesn't match, expected (0,0)-(136,62), got (0,0)-(132,62)
mci.c:1600: Test failed: 4: window rectangle doesn't match, expected (25,25)-(161,87), got (25,25)-(157,87)
mci.c:1600: Test failed: 5: window rectangle doesn't match, expected (1,1)-(137,63), got (1,1)-(133,63)
=== w7u_el (32 bit report) ===
winmm:
mci.c:1600: Test failed: 0: window rectangle doesn't match, expected (75,75)-(211,137), got (75,75)-(207,137)
mci.c:1600: Test failed: 1: window rectangle doesn't match, expected (150,150)-(286,212), got (150,150)-(282,212)
mci.c:1600: Test failed: 2: window rectangle doesn't match, expected (25,25)-(161,87), got (25,25)-(157,87)
mci.c:1600: Test failed: 3: window rectangle doesn't match, expected (0,0)-(136,62), got (0,0)-(132,62)
mci.c:1600: Test failed: 4: window rectangle doesn't match, expected (150,150)-(286,212), got (150,150)-(282,212)
mci.c:1600: Test failed: 5: window rectangle doesn't match, expected (1,1)-(137,63), got (1,1)-(133,63)
=== w8 (32 bit report) ===
winmm:
mci.c:1600: Test failed: 0: window rectangle doesn't match, expected (156,156)-(292,219), got (156,156)-(296,219)
mci.c:1600: Test failed: 1: window rectangle doesn't match, expected (52,52)-(188,115), got (52,52)-(192,115)
mci.c:1600: Test failed: 2: window rectangle doesn't match, expected (130,130)-(266,193), got (130,130)-(270,193)
mci.c:1600: Test failed: 3: window rectangle doesn't match, expected (0,0)-(136,63), got (0,0)-(140,63)
mci.c:1600: Test failed: 4: window rectangle doesn't match, expected (78,78)-(214,141), got (78,78)-(218,141)
mci.c:1600: Test failed: 5: window rectangle doesn't match, expected (1,1)-(137,64), got (1,1)-(141,64)
=== w8adm (32 bit report) ===
winmm:
mci.c:1600: Test failed: 0: window rectangle doesn't match, expected (26,26)-(162,89), got (26,26)-(166,89)
mci.c:1600: Test failed: 1: window rectangle doesn't match, expected (78,78)-(214,141), got (78,78)-(218,141)
mci.c:1600: Test failed: 2: window rectangle doesn't match, expected (156,156)-(292,219), got (156,156)-(296,219)
mci.c:1600: Test failed: 3: window rectangle doesn't match, expected (0,0)-(136,63), got (0,0)-(140,63)
mci.c:1600: Test failed: 4: window rectangle doesn't match, expected (104,104)-(240,167), got (104,104)-(244,167)
mci.c:1600: Test failed: 5: window rectangle doesn't match, expected (1,1)-(137,64), got (1,1)-(141,64)
=== w864 (32 bit report) ===
winmm:
mci.c:1600: Test failed: 0: window rectangle doesn't match, expected (156,156)-(292,219), got (156,156)-(296,219)
mci.c:1600: Test failed: 1: window rectangle doesn't match, expected (52,52)-(188,115), got (52,52)-(192,115)
mci.c:1600: Test failed: 2: window rectangle doesn't match, expected (130,130)-(266,193), got (130,130)-(270,193)
mci.c:1600: Test failed: 3: window rectangle doesn't match, expected (0,0)-(136,63), got (0,0)-(140,63)
mci.c:1600: Test failed: 4: window rectangle doesn't match, expected (78,78)-(214,141), got (78,78)-(218,141)
mci.c:1600: Test failed: 5: window rectangle doesn't match, expected (1,1)-(137,64), got (1,1)-(141,64)
=== w864 (64 bit report) ===
winmm:
mci.c:1600: Test failed: 0: window rectangle doesn't match, expected (156,156)-(292,219), got (156,156)-(296,219)
mci.c:1600: Test failed: 1: window rectangle doesn't match, expected (52,52)-(188,115), got (52,52)-(192,115)
mci.c:1600: Test failed: 2: window rectangle doesn't match, expected (130,130)-(266,193), got (130,130)-(270,193)
mci.c:1600: Test failed: 3: window rectangle doesn't match, expected (0,0)-(136,63), got (0,0)-(140,63)
mci.c:1600: Test failed: 4: window rectangle doesn't match, expected (78,78)-(214,141), got (78,78)-(218,141)
mci.c:1600: Test failed: 5: window rectangle doesn't match, expected (1,1)-(137,64), got (1,1)-(141,64)
July 28, 2022
Re: [PATCH v4 06/11] mciqtz32: Correct video window behavior by creating default window.
by Marvin
Hi,
It looks like your patch introduced the new failures shown below.
Please investigate and fix them before resubmitting your patch.
If they are not new, fixing them anyway would help a lot. Otherwise
please ask for the known failures list to be updated.
The full results can be found at:
https://testbot.winehq.org/JobDetails.pl?Key=120078
Your paranoid android.
=== w7u_2qxl (32 bit report) ===
winmm:
mci.c:1600: Test failed: 0: window rectangle doesn't match, expected (25,25)-(161,87), got (25,25)-(157,87)
mci.c:1600: Test failed: 1: window rectangle doesn't match, expected (100,100)-(236,162), got (100,100)-(232,162)
mci.c:1600: Test failed: 2: window rectangle doesn't match, expected (175,175)-(311,237), got (175,175)-(307,237)
mci.c:1600: Test failed: 3: window rectangle doesn't match, expected (0,0)-(136,62), got (0,0)-(132,62)
mci.c:1600: Test failed: 4: window rectangle doesn't match, expected (125,125)-(261,187), got (125,125)-(257,187)
mci.c:1600: Test failed: 5: window rectangle doesn't match, expected (1,1)-(137,63), got (1,1)-(133,63)
=== w7u_adm (32 bit report) ===
winmm:
mci.c:1600: Test failed: 0: window rectangle doesn't match, expected (100,100)-(236,162), got (100,100)-(232,162)
mci.c:1600: Test failed: 1: window rectangle doesn't match, expected (175,175)-(311,237), got (175,175)-(307,237)
mci.c:1600: Test failed: 2: window rectangle doesn't match, expected (75,75)-(211,137), got (75,75)-(207,137)
mci.c:1600: Test failed: 3: window rectangle doesn't match, expected (0,0)-(136,62), got (0,0)-(132,62)
mci.c:1600: Test failed: 4: window rectangle doesn't match, expected (25,25)-(161,87), got (25,25)-(157,87)
mci.c:1600: Test failed: 5: window rectangle doesn't match, expected (1,1)-(137,63), got (1,1)-(133,63)
=== w7u_el (32 bit report) ===
winmm:
mci.c:1600: Test failed: 0: window rectangle doesn't match, expected (75,75)-(211,137), got (75,75)-(207,137)
mci.c:1600: Test failed: 1: window rectangle doesn't match, expected (150,150)-(286,212), got (150,150)-(282,212)
mci.c:1600: Test failed: 2: window rectangle doesn't match, expected (25,25)-(161,87), got (25,25)-(157,87)
mci.c:1600: Test failed: 3: window rectangle doesn't match, expected (0,0)-(136,62), got (0,0)-(132,62)
mci.c:1600: Test failed: 4: window rectangle doesn't match, expected (150,150)-(286,212), got (150,150)-(282,212)
mci.c:1600: Test failed: 5: window rectangle doesn't match, expected (1,1)-(137,63), got (1,1)-(133,63)
=== w8 (32 bit report) ===
winmm:
mci.c:1600: Test failed: 0: window rectangle doesn't match, expected (156,156)-(292,219), got (156,156)-(296,219)
mci.c:1600: Test failed: 1: window rectangle doesn't match, expected (52,52)-(188,115), got (52,52)-(192,115)
mci.c:1600: Test failed: 2: window rectangle doesn't match, expected (130,130)-(266,193), got (130,130)-(270,193)
mci.c:1600: Test failed: 3: window rectangle doesn't match, expected (0,0)-(136,63), got (0,0)-(140,63)
mci.c:1600: Test failed: 4: window rectangle doesn't match, expected (78,78)-(214,141), got (78,78)-(218,141)
mci.c:1600: Test failed: 5: window rectangle doesn't match, expected (1,1)-(137,64), got (1,1)-(141,64)
=== w8adm (32 bit report) ===
winmm:
mci.c:1600: Test failed: 0: window rectangle doesn't match, expected (156,156)-(292,219), got (156,156)-(296,219)
mci.c:1600: Test failed: 1: window rectangle doesn't match, expected (52,52)-(188,115), got (52,52)-(192,115)
mci.c:1600: Test failed: 2: window rectangle doesn't match, expected (130,130)-(266,193), got (130,130)-(270,193)
mci.c:1600: Test failed: 3: window rectangle doesn't match, expected (0,0)-(136,63), got (0,0)-(140,63)
mci.c:1600: Test failed: 4: window rectangle doesn't match, expected (78,78)-(214,141), got (78,78)-(218,141)
mci.c:1600: Test failed: 5: window rectangle doesn't match, expected (1,1)-(137,64), got (1,1)-(141,64)
=== w864 (32 bit report) ===
winmm:
mci.c:1600: Test failed: 0: window rectangle doesn't match, expected (156,156)-(292,219), got (156,156)-(296,219)
mci.c:1600: Test failed: 1: window rectangle doesn't match, expected (52,52)-(188,115), got (52,52)-(192,115)
mci.c:1600: Test failed: 2: window rectangle doesn't match, expected (130,130)-(266,193), got (130,130)-(270,193)
mci.c:1600: Test failed: 3: window rectangle doesn't match, expected (0,0)-(136,63), got (0,0)-(140,63)
mci.c:1600: Test failed: 4: window rectangle doesn't match, expected (78,78)-(214,141), got (78,78)-(218,141)
mci.c:1600: Test failed: 5: window rectangle doesn't match, expected (1,1)-(137,64), got (1,1)-(141,64)
=== w864 (64 bit report) ===
winmm:
mci.c:1600: Test failed: 0: window rectangle doesn't match, expected (156,156)-(292,219), got (156,156)-(296,219)
mci.c:1600: Test failed: 1: window rectangle doesn't match, expected (52,52)-(188,115), got (52,52)-(192,115)
mci.c:1600: Test failed: 2: window rectangle doesn't match, expected (130,130)-(266,193), got (130,130)-(270,193)
mci.c:1600: Test failed: 3: window rectangle doesn't match, expected (0,0)-(136,63), got (0,0)-(140,63)
mci.c:1600: Test failed: 4: window rectangle doesn't match, expected (78,78)-(214,141), got (78,78)-(218,141)
mci.c:1600: Test failed: 5: window rectangle doesn't match, expected (1,1)-(137,64), got (1,1)-(141,64)
July 28, 2022
Re: [PATCH v4 05/11] winmm/tests: Add tests for destination of video window.
by Marvin
Hi,
It looks like your patch introduced the new failures shown below.
Please investigate and fix them before resubmitting your patch.
If they are not new, fixing them anyway would help a lot. Otherwise
please ask for the known failures list to be updated.
The full results can be found at:
https://testbot.winehq.org/JobDetails.pl?Key=120077
Your paranoid android.
=== w7u_2qxl (32 bit report) ===
winmm:
mci.c:1606: Test failed: 0: window rectangle doesn't match, expected (25,25)-(161,87), got (25,25)-(157,87)
mci.c:1606: Test failed: 1: window rectangle doesn't match, expected (100,100)-(236,162), got (100,100)-(232,162)
mci.c:1606: Test failed: 2: window rectangle doesn't match, expected (175,175)-(311,237), got (175,175)-(307,237)
mci.c:1606: Test failed: 3: window rectangle doesn't match, expected (0,0)-(136,62), got (0,0)-(132,62)
mci.c:1606: Test failed: 4: window rectangle doesn't match, expected (125,125)-(261,187), got (125,125)-(257,187)
mci.c:1606: Test failed: 5: window rectangle doesn't match, expected (1,1)-(137,63), got (1,1)-(133,63)
=== w7u_adm (32 bit report) ===
winmm:
mci.c:1606: Test failed: 0: window rectangle doesn't match, expected (100,100)-(236,162), got (100,100)-(232,162)
mci.c:1606: Test failed: 1: window rectangle doesn't match, expected (175,175)-(311,237), got (175,175)-(307,237)
mci.c:1606: Test failed: 2: window rectangle doesn't match, expected (75,75)-(211,137), got (75,75)-(207,137)
mci.c:1606: Test failed: 3: window rectangle doesn't match, expected (0,0)-(136,62), got (0,0)-(132,62)
mci.c:1606: Test failed: 4: window rectangle doesn't match, expected (25,25)-(161,87), got (25,25)-(157,87)
mci.c:1606: Test failed: 5: window rectangle doesn't match, expected (1,1)-(137,63), got (1,1)-(133,63)
=== w7u_el (32 bit report) ===
winmm:
mci.c:1606: Test failed: 0: window rectangle doesn't match, expected (75,75)-(211,137), got (75,75)-(207,137)
mci.c:1606: Test failed: 1: window rectangle doesn't match, expected (150,150)-(286,212), got (150,150)-(282,212)
mci.c:1606: Test failed: 2: window rectangle doesn't match, expected (25,25)-(161,87), got (25,25)-(157,87)
mci.c:1606: Test failed: 3: window rectangle doesn't match, expected (0,0)-(136,62), got (0,0)-(132,62)
mci.c:1606: Test failed: 4: window rectangle doesn't match, expected (150,150)-(286,212), got (150,150)-(282,212)
mci.c:1606: Test failed: 5: window rectangle doesn't match, expected (1,1)-(137,63), got (1,1)-(133,63)
=== w8 (32 bit report) ===
winmm:
mci.c:1606: Test failed: 0: window rectangle doesn't match, expected (156,156)-(292,219), got (156,156)-(296,219)
mci.c:1606: Test failed: 1: window rectangle doesn't match, expected (52,52)-(188,115), got (52,52)-(192,115)
mci.c:1606: Test failed: 2: window rectangle doesn't match, expected (130,130)-(266,193), got (130,130)-(270,193)
mci.c:1606: Test failed: 3: window rectangle doesn't match, expected (0,0)-(136,63), got (0,0)-(140,63)
mci.c:1606: Test failed: 4: window rectangle doesn't match, expected (78,78)-(214,141), got (78,78)-(218,141)
mci.c:1606: Test failed: 5: window rectangle doesn't match, expected (1,1)-(137,64), got (1,1)-(141,64)
=== w8adm (32 bit report) ===
winmm:
mci.c:1606: Test failed: 0: window rectangle doesn't match, expected (26,26)-(162,89), got (26,26)-(166,89)
mci.c:1606: Test failed: 1: window rectangle doesn't match, expected (78,78)-(214,141), got (78,78)-(218,141)
mci.c:1606: Test failed: 2: window rectangle doesn't match, expected (156,156)-(292,219), got (156,156)-(296,219)
mci.c:1606: Test failed: 3: window rectangle doesn't match, expected (0,0)-(136,63), got (0,0)-(140,63)
mci.c:1606: Test failed: 4: window rectangle doesn't match, expected (104,104)-(240,167), got (104,104)-(244,167)
mci.c:1606: Test failed: 5: window rectangle doesn't match, expected (1,1)-(137,64), got (1,1)-(141,64)
=== w864 (32 bit report) ===
winmm:
mci.c:1606: Test failed: 0: window rectangle doesn't match, expected (156,156)-(292,219), got (156,156)-(296,219)
mci.c:1606: Test failed: 1: window rectangle doesn't match, expected (52,52)-(188,115), got (52,52)-(192,115)
mci.c:1606: Test failed: 2: window rectangle doesn't match, expected (130,130)-(266,193), got (130,130)-(270,193)
mci.c:1606: Test failed: 3: window rectangle doesn't match, expected (0,0)-(136,63), got (0,0)-(140,63)
mci.c:1606: Test failed: 4: window rectangle doesn't match, expected (78,78)-(214,141), got (78,78)-(218,141)
mci.c:1606: Test failed: 5: window rectangle doesn't match, expected (1,1)-(137,64), got (1,1)-(141,64)
=== w864 (64 bit report) ===
winmm:
mci.c:1606: Test failed: 0: window rectangle doesn't match, expected (156,156)-(292,219), got (156,156)-(296,219)
mci.c:1606: Test failed: 1: window rectangle doesn't match, expected (52,52)-(188,115), got (52,52)-(192,115)
mci.c:1606: Test failed: 2: window rectangle doesn't match, expected (130,130)-(266,193), got (130,130)-(270,193)
mci.c:1606: Test failed: 3: window rectangle doesn't match, expected (0,0)-(136,63), got (0,0)-(140,63)
mci.c:1606: Test failed: 4: window rectangle doesn't match, expected (78,78)-(214,141), got (78,78)-(218,141)
mci.c:1606: Test failed: 5: window rectangle doesn't match, expected (1,1)-(137,64), got (1,1)-(141,64)
July 28, 2022
Re: [PATCH v4 04/11] winmm/tests: Add tests for dimensions of video window.
by Marvin
Hi,
It looks like your patch introduced the new failures shown below.
Please investigate and fix them before resubmitting your patch.
If they are not new, fixing them anyway would help a lot. Otherwise
please ask for the known failures list to be updated.
The full results can be found at:
https://testbot.winehq.org/JobDetails.pl?Key=120076
Your paranoid android.
=== w7u_2qxl (32 bit report) ===
winmm:
mci.c:1601: Test failed: 0: window rectangle doesn't match, expected (150,150)-(286,212), got (150,150)-(282,212)
mci.c:1601: Test failed: 1: window rectangle doesn't match, expected (25,25)-(161,87), got (25,25)-(157,87)
mci.c:1601: Test failed: 2: window rectangle doesn't match, expected (100,100)-(236,162), got (100,100)-(232,162)
mci.c:1601: Test failed: 3: window rectangle doesn't match, expected (0,0)-(136,62), got (0,0)-(132,62)
mci.c:1601: Test failed: 4: window rectangle doesn't match, expected (25,25)-(161,87), got (25,25)-(157,87)
mci.c:1601: Test failed: 5: window rectangle doesn't match, expected (1,1)-(137,63), got (1,1)-(133,63)
=== w7u_adm (32 bit report) ===
winmm:
mci.c:1601: Test failed: 0: window rectangle doesn't match, expected (100,100)-(236,162), got (100,100)-(232,162)
mci.c:1601: Test failed: 1: window rectangle doesn't match, expected (175,175)-(311,237), got (175,175)-(307,237)
mci.c:1601: Test failed: 2: window rectangle doesn't match, expected (75,75)-(211,137), got (75,75)-(207,137)
mci.c:1601: Test failed: 3: window rectangle doesn't match, expected (0,0)-(136,62), got (0,0)-(132,62)
mci.c:1601: Test failed: 4: window rectangle doesn't match, expected (25,25)-(161,87), got (25,25)-(157,87)
mci.c:1601: Test failed: 5: window rectangle doesn't match, expected (1,1)-(137,63), got (1,1)-(133,63)
=== w7u_el (32 bit report) ===
winmm:
mci.c:1601: Test failed: 0: window rectangle doesn't match, expected (75,75)-(211,137), got (75,75)-(207,137)
mci.c:1601: Test failed: 1: window rectangle doesn't match, expected (150,150)-(286,212), got (150,150)-(282,212)
mci.c:1601: Test failed: 2: window rectangle doesn't match, expected (25,25)-(161,87), got (25,25)-(157,87)
mci.c:1601: Test failed: 3: window rectangle doesn't match, expected (0,0)-(136,62), got (0,0)-(132,62)
mci.c:1601: Test failed: 4: window rectangle doesn't match, expected (150,150)-(286,212), got (150,150)-(282,212)
mci.c:1601: Test failed: 5: window rectangle doesn't match, expected (1,1)-(137,63), got (1,1)-(133,63)
=== w8 (32 bit report) ===
winmm:
mci.c:1601: Test failed: 0: window rectangle doesn't match, expected (156,156)-(292,219), got (156,156)-(296,219)
mci.c:1601: Test failed: 1: window rectangle doesn't match, expected (52,52)-(188,115), got (52,52)-(192,115)
mci.c:1601: Test failed: 2: window rectangle doesn't match, expected (130,130)-(266,193), got (130,130)-(270,193)
mci.c:1601: Test failed: 3: window rectangle doesn't match, expected (0,0)-(136,63), got (0,0)-(140,63)
mci.c:1601: Test failed: 4: window rectangle doesn't match, expected (78,78)-(214,141), got (78,78)-(218,141)
mci.c:1601: Test failed: 5: window rectangle doesn't match, expected (1,1)-(137,64), got (1,1)-(141,64)
=== w8adm (32 bit report) ===
winmm:
mci.c:1601: Test failed: 0: window rectangle doesn't match, expected (156,156)-(292,219), got (156,156)-(296,219)
mci.c:1601: Test failed: 1: window rectangle doesn't match, expected (52,52)-(188,115), got (52,52)-(192,115)
mci.c:1601: Test failed: 2: window rectangle doesn't match, expected (130,130)-(266,193), got (130,130)-(270,193)
mci.c:1601: Test failed: 3: window rectangle doesn't match, expected (0,0)-(136,63), got (0,0)-(140,63)
mci.c:1601: Test failed: 4: window rectangle doesn't match, expected (78,78)-(214,141), got (78,78)-(218,141)
mci.c:1601: Test failed: 5: window rectangle doesn't match, expected (1,1)-(137,64), got (1,1)-(141,64)
=== w864 (32 bit report) ===
winmm:
mci.c:1601: Test failed: 0: window rectangle doesn't match, expected (156,156)-(292,219), got (156,156)-(296,219)
mci.c:1601: Test failed: 1: window rectangle doesn't match, expected (52,52)-(188,115), got (52,52)-(192,115)
mci.c:1601: Test failed: 2: window rectangle doesn't match, expected (130,130)-(266,193), got (130,130)-(270,193)
mci.c:1601: Test failed: 3: window rectangle doesn't match, expected (0,0)-(136,63), got (0,0)-(140,63)
mci.c:1601: Test failed: 4: window rectangle doesn't match, expected (78,78)-(214,141), got (78,78)-(218,141)
mci.c:1601: Test failed: 5: window rectangle doesn't match, expected (1,1)-(137,64), got (1,1)-(141,64)
=== w864 (64 bit report) ===
winmm:
mci.c:1601: Test failed: 0: window rectangle doesn't match, expected (156,156)-(292,219), got (156,156)-(296,219)
mci.c:1601: Test failed: 1: window rectangle doesn't match, expected (52,52)-(188,115), got (52,52)-(192,115)
mci.c:1601: Test failed: 2: window rectangle doesn't match, expected (130,130)-(266,193), got (130,130)-(270,193)
mci.c:1601: Test failed: 3: window rectangle doesn't match, expected (0,0)-(136,63), got (0,0)-(140,63)
mci.c:1601: Test failed: 4: window rectangle doesn't match, expected (78,78)-(214,141), got (78,78)-(218,141)
mci.c:1601: Test failed: 5: window rectangle doesn't match, expected (1,1)-(137,64), got (1,1)-(141,64)
July 28, 2022
Re: [PATCH v3 1/2] ddraw: Don't account video memory for sysmem surfaces' draw textures.
by Marvin
Hi,
It looks like your patch introduced the new failures shown below.
Please investigate and fix them before resubmitting your patch.
If they are not new, fixing them anyway would help a lot. Otherwise
please ask for the known failures list to be updated.
The full results can be found at:
https://testbot.winehq.org/JobDetails.pl?Key=120070
Your paranoid android.
=== debian11 (32 bit Chinese:China report) ===
Report validation errors:
ddraw7: Timeout
=== debian11 (build log) ===
WineRunWineTest.pl:error: The task timed out
July 28, 2022
Re: [PATCH v2 1/6] mciqtz32: Simplify video window management by creating default window.
by Akihiro Sagawa
On Thu, 7 Jul 2022 14:19:02 -0500, Zebediah Figura wrote:
> On 7/5/22 06:34, Akihiro Sagawa wrote:
> > From: Akihiro Sagawa <sagawa.aki(a)gmail.com>
> >
> > Now the video window by IVideoWindow always has WS_CHILD style regardless
> > open parameters.
> >
> > Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52448
> > Signed-off-by: Akihiro Sagawa <sagawa.aki(a)gmail.com>
>
> What's being simplified, exactly? As far as I can tell we're changing our behaviour to be more correct, but it's certainly not getting simpler.
You're right. It's not so simple... I'll rename it.
[...]
> > + }
> > +
> > + case WM_CLOSE:
> > + {
> > + MCIQTZ_mciPause(GetWindowLongW(hWnd, 0), MCI_WAIT, NULL);
> > + ShowWindow(hWnd, SW_HIDE);
> > + return 0;
> > + }
>
> It seems probably easy enough to test this in winmm, but even failing that, manual tests would be nice.
I'll do.
> > +
> > + case WM_ERASEBKGND:
> > + {
> > + RECT rect;
> > + GetClientRect(hWnd, &rect);
> > + FillRect((HDC)wParam, &rect, GetStockObject(BLACK_BRUSH));
> > + return 1;
> > + }
>
> Why this instead of setting the background brush to black?
That's good idea. However, manual test shows it's unnecessary. I'll get
rid of this block in revised versoin.
[...]
> > +
> > + if (dwFlags & MCI_DGV_OPEN_PARENT) hParent = lpParms->hWndParent;
> > + if (dwFlags & MCI_DGV_OPEN_WS) dwStyle = lpParms->dwStyle;
> > +
> > + dwStyle &= ~WS_VISIBLE;
> > +
> > + rc.left = rc.top = 0;
> > + hr = IBasicVideo_GetVideoSize(wma->vidbasic, &rc.right, &rc.bottom);
> > + if (FAILED(hr)) return hr == E_NOINTERFACE; /* no video renderer ? */
>
> When can that happen?
MCIQTZ driver can also handle an audio file, such as an MP3 file.
I'd like to return early for the case.
> > +
> > + AdjustWindowRect(&rc, dwStyle, FALSE);
> > + if (!(dwStyle & (WS_CHILD|WS_POPUP))) /* overlapped window ? */
>
> Where is this logic coming from? Do you have tests?
> This also loses the previous logic that uses GetClientRect() on the parent. That might be correct, but it lacks tests, and it should probably be done in a separate patch.
This logic, MCIQTZ_CreateWindow and MCIQTZ_WindowProc mostly come from
dlls/mciavi32/wnd.c. Some of them arn't applicable to MCIQTZ. I'll add
some tests regarding window dimensions.
> > + {
> > + rc.right -= rc.left;
> > + rc.bottom -= rc.top;
>
> Aren't "left" and "top" zero?
No, AdjustWindowRect() makes them negative numbers.
For instance,
SetRect(&rc, 0, 0, 640, 480);
AdjustWindowRect(&rc, WS_OVERLAPPEDWINDOW, FALSE);
It'll show, rc.left: -3 and rc.top: -22. Of course, these values are
varies caption bar height, etc.
> It seems like it'd be less confusing in general to use separate width/height (or x/y) variables instead of passing rc.right and rc.bottom directly to AdjustWindow.
Right.
[...]
> > + wma->parent = wma->window;
> > + IVideoWindow_put_AutoShow(wma->vidwin, OAFALSE);
> > + IVideoWindow_put_MessageDrain(wma->vidwin, (OAHWND)wma->parent);
> > + IVideoWindow_put_WindowStyle(wma->vidwin, WS_CHILD);
>
> put_Owner() automatically sets WS_CHILD.
Yes, but the main point of this call is resetting the window style.
Otherwise, video renderer window inherits the former, overlapped window
style, e.g. WS_CAPTION.
> > + IVideoWindow_put_Owner(wma->vidwin, (OAHWND)wma->parent);
> > + IVideoWindow_put_Visible(wma->vidwin, OATRUE);
> > +
> > + return TRUE;
> > +}
> > +
[...]
> > @@ -307,6 +400,13 @@ static DWORD MCIQTZ_mciClose(UINT wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lpP
> > MCIQTZ_mciStop(wDevID, MCI_WAIT, NULL);
> > > if (wma->opened) {
> > + if (wma->window)
>
> Assuming we were to check for failure in MCIQTZ_mciOpen(), which I imgaine we should do, can this happen?
>
> There are other similar cases below.
Again, MCIQTZ can open audio files. In that case, wma->window will be
NULL.
> > + {
> > + IVideoWindow_put_MessageDrain(wma->vidwin, (OAHWND)NULL);
> > + IVideoWindow_put_Owner(wma->vidwin, (OAHWND)NULL);
> > + DestroyWindow(wma->window);
> > + wma->window = NULL;
> > + }
> > IVideoWindow_Release(wma->vidwin);
> > IBasicVideo_Release(wma->vidbasic);
> > IBasicAudio_Release(wma->audio);
[...]
> > @@ -525,9 +626,6 @@ static DWORD MCIQTZ_mciStop(UINT wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lpPa
> > wma->thread = NULL;
> > }
> > > - if (!wma->parent)
> > - IVideoWindow_put_Visible(wma->vidwin, OAFALSE);
> > -
>
> The tests bear this out, but it's also a change in behaviour that seems outside the scope of this patch.
Indeed. I'll add test and patch for this point before this patch.
> > return 0;
> > }
> > > @@ -574,6 +672,9 @@ static DWORD MCIQTZ_mciResume(UINT wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lp
> > return MCIERR_INTERNAL;
> > }
> > > + if (wma->parent)
> > + ShowWindow(wma->parent, SW_SHOW);
> > +
>
> This doesn't have tests, and it also seems outside the scope of this patch.
Sure. I'll split this change into another patch.
> > return 0;
> > }
> > > @@ -919,21 +1020,10 @@ static DWORD MCIQTZ_mciWindow(UINT wDevID, DWORD dwFlags, LPMCI_DGV_WINDOW_PARMS
> > return 0;
> > > if (dwFlags & MCI_DGV_WINDOW_HWND && (IsWindow(lpParms->hWnd) || !lpParms->hWnd)) {
> > - LONG visible = OATRUE;
> > - LONG style = 0;
> > TRACE("Setting hWnd to %p\n", lpParms->hWnd);
> > - IVideoWindow_get_Visible(wma->vidwin, &visible);
> > - IVideoWindow_put_Visible(wma->vidwin, OAFALSE);
> > - IVideoWindow_get_WindowStyle(wma->vidwin, &style);
> > - style &= ~WS_CHILD;
> > - if (lpParms->hWnd)
> > - IVideoWindow_put_WindowStyle(wma->vidwin, style|WS_CHILD);
> > - else
> > - IVideoWindow_put_WindowStyle(wma->vidwin, style);
> > - IVideoWindow_put_Owner(wma->vidwin, (OAHWND)lpParms->hWnd);
> > - IVideoWindow_put_MessageDrain(wma->vidwin, (OAHWND)lpParms->hWnd);
> > - IVideoWindow_put_Visible(wma->vidwin, visible);
> > - wma->parent = lpParms->hWnd;
> > + wma->parent = lpParms->hWnd ? lpParms->hWnd : wma->window;
> > + IVideoWindow_put_MessageDrain(wma->vidwin, (OAHWND)wma->parent);
> > + IVideoWindow_put_Owner(wma->vidwin, (OAHWND)wma->parent);
> > }
>
> Should we also hide "wma->window" here?
Good catch. We need tests at this point.
Thanks for reviewing and feedbacks.
I'll send updated patch soon.
Sorry for the delay in replying due to trial and error.
Akihiro Sagawa
July 28, 2022
[PATCH] server: Write terminating '\0' in the strings.
by Dmitry Timoshkov
I have an application that creates its special registry key using
NtCreateKey(parent, "Something\0"), and then expects to be able to
open this key with NtOpenKey("Something\0") on start up. Currently
this fails because terminating '\0' in the key name doesn't survive
saving/loading the registry. parse_strW() helper already supports
loading such key names.
As the tests show after creating a kernel object with name "Something\0"
it's possible to only open it as "Something\0", an attempt opening it
as "Something" fails with STATUS_OBJECT_NAME_NOT_FOUND, and vice versa.
Signed-off-by: Dmitry Timoshkov <dmitry(a)baikal.ru>
---
server/unicode.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/server/unicode.c b/server/unicode.c
index 86a1217b01f..a146677cf21 100644
--- a/server/unicode.c
+++ b/server/unicode.c
@@ -219,7 +219,6 @@ int dump_strW( const WCHAR *str, data_size_t len, FILE *f, const char escape[2]
}
if (*str < 32) /* octal or C escape */
{
- if (!*str && len == 1) continue; /* do not output terminating NULL */
if (escapes[*str] != '.')
pos += sprintf( pos, "\\%c", escapes[*str] );
else if (len > 1 && str[1] >= '0' && str[1] <= '7')
--
2.37.1
July 28, 2022
[PATCH 2/2] ntdll/tests: Add a bunch of tests for creating kernel objects with the names containing '\0'.
by Dmitry Timoshkov
As the tests show after creating a kernel object with name "wine_test\0"
it's possible to only open it as "wine_test\0", an attempt opening it
as "wine_test" fails with STATUS_OBJECT_NAME_NOT_FOUND, and vice versa.
Also the tests show that "wine\0test" is a valid kernel object name.
Signed-off-by: Dmitry Timoshkov <dmitry(a)baikal.ru>
---
dlls/ntdll/tests/om.c | 350 +++++++++++++++++++++++++++++++++++++++++-
1 file changed, 349 insertions(+), 1 deletion(-)
diff --git a/dlls/ntdll/tests/om.c b/dlls/ntdll/tests/om.c
index 7fe0fb59f89..f98a8843d62 100644
--- a/dlls/ntdll/tests/om.c
+++ b/dlls/ntdll/tests/om.c
@@ -1580,7 +1580,8 @@ static void _test_object_name( unsigned line, HANDLE handle, const WCHAR *expect
ok_(__FILE__,line)( status == STATUS_SUCCESS, "NtQueryObject failed %lx\n", status );
ok_(__FILE__,line)( len >= sizeof(OBJECT_NAME_INFORMATION) + str->Length, "unexpected len %lu\n", len );
todo_wine_if (todo)
- ok_(__FILE__,line)(compare_unicode_string( str, expected_name ), "wrong name %s\n", debugstr_w( str->Buffer ));
+ ok_(__FILE__,line)(compare_unicode_string( str, expected_name ), "got %s, expected %s\n",
+ debugstr_w(str->Buffer), debugstr_w(expected_name));
}
static void test_query_object(void)
@@ -2722,6 +2723,352 @@ static void test_query_directory(void)
pNtClose( dir );
}
+#define test_object_name_with_null(a,b) _test_object_name_with_null(__LINE__,a,b)
+static void _test_object_name_with_null(unsigned line, HANDLE handle, UNICODE_STRING *expect)
+{
+ char buffer[1024];
+ UNICODE_STRING *str = (UNICODE_STRING *)buffer;
+ ULONG len = 0;
+ NTSTATUS status;
+
+ memset(buffer, 0, sizeof(buffer));
+ status = pNtQueryObject(handle, ObjectNameInformation, buffer, sizeof(buffer), &len);
+ ok_(__FILE__,line)(status == STATUS_SUCCESS, "got %08lx\n", status);
+ ok_(__FILE__,line)(len >= sizeof(OBJECT_NAME_INFORMATION) + str->Length, "got %lu\n", len);
+ ok_(__FILE__,line)(str->Length == expect->Length, "got %lu, expected %lu\n", str->Length, expect->Length);
+ ok_(__FILE__,line)(!wcsnicmp(str->Buffer, expect->Buffer, str->Length/sizeof(WCHAR)), "got %s, expected %s\n",
+ debugstr_w(str->Buffer), debugstr_w(expect->Buffer));
+}
+
+static void test_null_in_object_name(void)
+{
+ WCHAR name[256], name3[256], *p, *name_exp, *name3_exp;
+ HANDLE handle, handle2;
+ NTSTATUS status;
+ OBJECT_ATTRIBUTES attr, attr2, attr3;
+ UNICODE_STRING nameU, name2U, name3U, name2U_exp, name3U_exp;
+ LARGE_INTEGER size;
+#ifndef _WIN64
+ BOOL is_wow64 = FALSE;
+#endif
+
+ trace("running as %d bit\n", (int)sizeof(void *) * 8);
+
+ swprintf(name, ARRAY_SIZE(name), L"\\Sessions\\%u\\BaseNamedObjects\\wine_test", NtCurrentTeb()->Peb->SessionId);
+ swprintf(name3, ARRAY_SIZE(name3), L"\\Sessions\\%u\\BaseNamedObjects\\wine_test", NtCurrentTeb()->Peb->SessionId);
+ p = wcsrchr(name3, '\\');
+ p[5] = 0; /* => \\wine\0test */
+
+ RtlInitUnicodeString(&nameU, name);
+ InitializeObjectAttributes(&attr, &nameU, 0, 0, NULL);
+
+ name2U = nameU;
+ name2U.Length += sizeof(WCHAR); /* add terminating \0 to string length */
+ InitializeObjectAttributes(&attr2, &name2U, 0, 0, NULL);
+
+ name3U = nameU;
+ name3U.Buffer = name3;
+ InitializeObjectAttributes(&attr3, &name3U, 0, 0, NULL);
+
+ status = pNtCreateEvent(&handle, GENERIC_ALL, &attr, NotificationEvent, FALSE);
+ ok(!status, "got %08lx\n", status);
+ test_object_name(handle, name, FALSE);
+ status = pNtOpenEvent(&handle2, GENERIC_ALL, &attr);
+ ok(!status, "got %08lx\n", status);
+ test_object_name(handle2, name, FALSE);
+ pNtClose(handle2);
+ status = pNtOpenEvent(&handle2, GENERIC_ALL, &attr2);
+ ok(status == STATUS_OBJECT_NAME_NOT_FOUND, "got %08lx\n", status);
+ pNtClose(handle);
+ status = pNtCreateEvent(&handle, GENERIC_ALL, &attr2, NotificationEvent, FALSE);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle, &name2U);
+ status = pNtOpenEvent(&handle2, GENERIC_ALL, &attr2);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle2, &name2U);
+ pNtClose(handle2);
+ status = pNtOpenEvent(&handle2, GENERIC_ALL, &attr);
+ ok(status == STATUS_OBJECT_NAME_NOT_FOUND, "got %08lx\n", status);
+ pNtClose(handle);
+ status = pNtCreateEvent(&handle, GENERIC_ALL, &attr3, NotificationEvent, FALSE);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle, &name3U);
+ status = pNtOpenEvent(&handle2, GENERIC_ALL, &attr3);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle2, &name3U);
+ pNtClose(handle2);
+ pNtClose(handle);
+
+ status = pNtCreateDebugObject(&handle, GENERIC_ALL, &attr, 0);
+ ok(!status, "got %08lx\n", status);
+ test_object_name(handle, name, FALSE);
+ pNtClose(handle);
+ status = pNtCreateDebugObject(&handle, GENERIC_ALL, &attr2, 0);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle, &name2U);
+ pNtClose(handle);
+ status = pNtCreateDebugObject(&handle, GENERIC_ALL, &attr3, 0);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle, &name3U);
+ pNtClose(handle);
+
+ status = pNtCreateMutant(&handle, GENERIC_ALL, &attr, 0);
+ ok(!status, "got %08lx\n", status);
+ test_object_name(handle, name, FALSE);
+ status = pNtOpenMutant(&handle2, GENERIC_ALL, &attr);
+ ok(!status, "got %08lx\n", status);
+ test_object_name(handle2, name, FALSE);
+ pNtClose(handle2);
+ status = pNtOpenMutant(&handle2, GENERIC_ALL, &attr2);
+ ok(status == STATUS_OBJECT_NAME_NOT_FOUND, "got %08lx\n", status);
+ pNtClose(handle);
+ status = pNtCreateMutant(&handle, GENERIC_ALL, &attr2, 0);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle, &name2U);
+ status = pNtOpenMutant(&handle2, GENERIC_ALL, &attr2);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle2, &name2U);
+ pNtClose(handle2);
+ status = pNtOpenMutant(&handle2, GENERIC_ALL, &attr);
+ ok(status == STATUS_OBJECT_NAME_NOT_FOUND, "got %08lx\n", status);
+ pNtClose(handle);
+ status = pNtCreateMutant(&handle, GENERIC_ALL, &attr3, 0);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle, &name3U);
+ status = pNtOpenMutant(&handle2, GENERIC_ALL, &attr3);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle2, &name3U);
+ pNtClose(handle2);
+ pNtClose(handle);
+
+ status = pNtCreateSemaphore(&handle, GENERIC_ALL, &attr, 1, 2);
+ ok(!status, "got %08lx\n", status);
+ test_object_name(handle, name, FALSE);
+ status = pNtOpenSemaphore(&handle2, GENERIC_ALL, &attr);
+ ok(!status, "got %08lx\n", status);
+ test_object_name(handle2, name, FALSE);
+ pNtClose(handle2);
+ status = pNtOpenSemaphore(&handle2, GENERIC_ALL, &attr2);
+ ok(status == STATUS_OBJECT_NAME_NOT_FOUND, "got %08lx\n", status);
+ pNtClose(handle);
+ status = pNtCreateSemaphore(&handle, GENERIC_ALL, &attr2, 1, 2);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle, &name2U);
+ status = pNtOpenSemaphore(&handle2, GENERIC_ALL, &attr2);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle2, &name2U);
+ pNtClose(handle2);
+ status = pNtOpenSemaphore(&handle2, GENERIC_ALL, &attr);
+ ok(status == STATUS_OBJECT_NAME_NOT_FOUND, "got %08lx\n", status);
+ pNtClose(handle);
+ status = pNtCreateSemaphore(&handle, GENERIC_ALL, &attr3, 1, 2);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle, &name3U);
+ status = pNtOpenSemaphore(&handle2, GENERIC_ALL, &attr3);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle2, &name3U);
+ pNtClose(handle2);
+ pNtClose(handle);
+
+ status = pNtCreateKeyedEvent(&handle, GENERIC_ALL, &attr, 0);
+ ok(!status, "got %08lx\n", status);
+ test_object_name(handle, name, FALSE);
+ status = pNtOpenKeyedEvent(&handle2, GENERIC_ALL, &attr);
+ ok(!status, "got %08lx\n", status);
+ test_object_name(handle2, name, FALSE);
+ pNtClose(handle2);
+ status = pNtOpenKeyedEvent(&handle2, GENERIC_ALL, &attr2);
+ ok(status == STATUS_OBJECT_NAME_NOT_FOUND, "got %08lx\n", status);
+ pNtClose(handle);
+ status = pNtCreateKeyedEvent(&handle, GENERIC_ALL, &attr2, 0);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle, &name2U);
+ status = pNtOpenKeyedEvent(&handle2, GENERIC_ALL, &attr2);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle2, &name2U);
+ pNtClose(handle2);
+ status = pNtOpenKeyedEvent(&handle2, GENERIC_ALL, &attr);
+ ok(status == STATUS_OBJECT_NAME_NOT_FOUND, "got %08lx\n", status);
+ pNtClose(handle);
+ status = pNtCreateKeyedEvent(&handle, GENERIC_ALL, &attr3, 0);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle, &name3U);
+ status = pNtOpenKeyedEvent(&handle2, GENERIC_ALL, &attr3);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle2, &name3U);
+ pNtClose(handle2);
+ pNtClose(handle);
+
+ status = pNtCreateIoCompletion(&handle, GENERIC_ALL, &attr, 0);
+ ok(!status, "got %08lx\n", status);
+ test_object_name(handle, name, FALSE);
+ status = pNtOpenIoCompletion(&handle2, GENERIC_ALL, &attr);
+ ok(!status, "got %08lx\n", status);
+ test_object_name(handle2, name, FALSE);
+ pNtClose(handle2);
+ pNtClose(handle);
+ status = pNtCreateIoCompletion(&handle, GENERIC_ALL, &attr2, 0);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle, &name2U);
+ status = pNtOpenIoCompletion(&handle2, GENERIC_ALL, &attr2);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle2, &name2U);
+ pNtClose(handle2);
+ pNtClose(handle);
+ status = pNtCreateIoCompletion(&handle, GENERIC_ALL, &attr3, 0);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle, &name3U);
+ status = pNtOpenIoCompletion(&handle2, GENERIC_ALL, &attr3);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle2, &name3U);
+ pNtClose(handle2);
+ pNtClose(handle);
+
+ status = pNtCreateJobObject(&handle, GENERIC_ALL, &attr);
+ ok(!status, "got %08lx\n", status);
+ test_object_name(handle, name, FALSE);
+ status = pNtOpenJobObject(&handle2, GENERIC_ALL, &attr);
+ ok(!status, "got %08lx\n", status);
+ test_object_name(handle2, name, FALSE);
+ pNtClose(handle2);
+ pNtClose(handle);
+ status = pNtCreateJobObject(&handle, GENERIC_ALL, &attr2);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle, &name2U);
+ status = pNtOpenJobObject(&handle2, GENERIC_ALL, &attr2);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle2, &name2U);
+ pNtClose(handle2);
+ pNtClose(handle);
+ status = pNtCreateJobObject(&handle, GENERIC_ALL, &attr3);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle, &name3U);
+ status = pNtOpenJobObject(&handle2, GENERIC_ALL, &attr3);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle2, &name3U);
+ pNtClose(handle2);
+ pNtClose(handle);
+
+ status = pNtCreateTimer(&handle, GENERIC_ALL, &attr, NotificationTimer);
+ ok(!status, "got %08lx\n", status);
+ test_object_name(handle, name, FALSE);
+ status = pNtOpenTimer(&handle2, GENERIC_ALL, &attr);
+ ok(!status, "got %08lx\n", status);
+ test_object_name(handle2, name, FALSE);
+ pNtClose(handle2);
+ pNtClose(handle);
+ status = pNtCreateTimer(&handle, GENERIC_ALL, &attr2, NotificationTimer);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle, &name2U);
+ status = pNtOpenTimer(&handle2, GENERIC_ALL, &attr2);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle2, &name2U);
+ pNtClose(handle2);
+ pNtClose(handle);
+ status = pNtCreateTimer(&handle, GENERIC_ALL, &attr3, NotificationTimer);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle, &name3U);
+ status = pNtOpenTimer(&handle2, GENERIC_ALL, &attr3);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle2, &name3U);
+ pNtClose(handle2);
+ pNtClose(handle);
+
+ size.QuadPart = 4096;
+ status = pNtCreateSection(&handle, GENERIC_ALL, &attr, &size, PAGE_READWRITE, SEC_COMMIT, 0);
+ ok(!status, "got %08lx\n", status);
+ test_object_name(handle, name, FALSE);
+ status = pNtOpenSection(&handle2, GENERIC_ALL, &attr);
+ ok(!status, "got %08lx\n", status);
+ test_object_name(handle2, name, FALSE);
+ pNtClose(handle2);
+ pNtClose(handle);
+ status = pNtCreateSection(&handle, GENERIC_ALL, &attr2, &size, PAGE_READWRITE, SEC_COMMIT, 0);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle, &name2U);
+ status = pNtOpenSection(&handle2, GENERIC_ALL, &attr2);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle2, &name2U);
+ pNtClose(handle2);
+ pNtClose(handle);
+ status = pNtCreateSection(&handle, GENERIC_ALL, &attr3, &size, PAGE_READWRITE, SEC_COMMIT, 0);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle, &name3U);
+ status = pNtOpenSection(&handle2, GENERIC_ALL, &attr3);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle2, &name3U);
+ pNtClose(handle2);
+ pNtClose(handle);
+
+ wcscpy(name, L"\\Registry\\Machine\\Software\\wine_test");
+ wcscpy(name3, L"\\Registry\\Machine\\Software\\wine_test");
+ p = wcsrchr(name3, '\\');
+ p[5] = 0; /* => \\wine\0test */
+
+ RtlInitUnicodeString(&nameU, name);
+ name2U = nameU;
+ name3U = nameU;
+ name3U.Buffer = name3;
+#ifdef _WIN64
+ name_exp = name;
+ name3_exp = name3;
+ name2U_exp = name2U;
+#else
+ if (IsWow64Process(GetCurrentProcess(), &is_wow64) && is_wow64)
+ {
+ name_exp = (WCHAR *)L"\\Registry\\Machine\\Software\\WOW6432Node\\wine_test";
+ name3_exp =(WCHAR *) L"\\Registry\\Machine\\Software\\WOW6432Node\\wine\0test";
+ }
+ else
+ {
+ name_exp = name;
+ name3_exp = name3;
+ }
+ RtlInitUnicodeString(&name2U_exp, name_exp);
+#endif
+ name3U_exp = name2U_exp;
+ name3U_exp.Buffer = name3_exp;
+ name2U.Length += sizeof(WCHAR); /* add terminating \0 to string length */
+ name2U_exp.Length += sizeof(WCHAR); /* add terminating \0 to string length */
+
+ status = pNtCreateKey(&handle, GENERIC_ALL, &attr, 0, NULL, 0, NULL);
+ ok(!status || status == STATUS_ACCESS_DENIED || broken(status == STATUS_OBJECT_PATH_NOT_FOUND) /* win8 */, "got %08lx\n", status);
+ if (!status)
+ {
+ test_object_name(handle, name_exp, FALSE);
+ status = pNtOpenKey(&handle2, GENERIC_ALL, &attr);
+ ok(!status, "got %08lx\n", status);
+ test_object_name(handle2, name_exp, FALSE);
+ pNtClose(handle2);
+ status = pNtOpenKey(&handle2, GENERIC_ALL, &attr2);
+ ok(status == STATUS_OBJECT_NAME_NOT_FOUND, "got %08lx\n", status);
+ pNtDeleteKey(handle);
+ pNtClose(handle);
+ status = pNtCreateKey(&handle, GENERIC_ALL, &attr2, 0, NULL, 0, NULL);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle, &name2U_exp);
+ status = pNtOpenKey(&handle2, GENERIC_ALL, &attr2);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle, &name2U_exp);
+ pNtClose(handle2);
+ status = pNtOpenKey(&handle2, GENERIC_ALL, &attr);
+ ok(status == STATUS_OBJECT_NAME_NOT_FOUND, "got %08lx\n", status);
+ pNtDeleteKey(handle);
+ pNtClose(handle);
+ status = pNtCreateKey(&handle, GENERIC_ALL, &attr3, 0, NULL, 0, NULL);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle, &name3U_exp);
+ status = pNtOpenKey(&handle2, GENERIC_ALL, &attr3);
+ ok(!status, "got %08lx\n", status);
+ test_object_name_with_null(handle, &name3U_exp);
+ pNtClose(handle2);
+ pNtDeleteKey(handle);
+ pNtClose(handle);
+ }
+ else
+ skip("Limited access to \\Registry\\Machine\\Software key, skipping the tests\n");
+}
+
START_TEST(om)
{
HMODULE hntdll = GetModuleHandleA("ntdll.dll");
@@ -2767,6 +3114,7 @@ START_TEST(om)
pNtDuplicateObject = (void *)GetProcAddress(hntdll, "NtDuplicateObject");
pNtCompareObjects = (void *)GetProcAddress(hntdll, "NtCompareObjects");
+ test_null_in_object_name();
test_case_sensitive();
test_namespace_pipe();
test_name_collisions();
--
2.37.1
July 28, 2022
[PATCH 1/2] ntdll/tests: Fix compilation with PSDK.
by Dmitry Timoshkov
Signed-off-by: Dmitry Timoshkov <dmitry(a)baikal.ru>
---
dlls/ntdll/tests/om.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/dlls/ntdll/tests/om.c b/dlls/ntdll/tests/om.c
index ddbdce0281c..7fe0fb59f89 100644
--- a/dlls/ntdll/tests/om.c
+++ b/dlls/ntdll/tests/om.c
@@ -2078,7 +2078,7 @@ static void test_token(void)
status = pNtOpenThreadToken( GetCurrentThread(), TOKEN_ALL_ACCESS, TRUE, (HANDLE *)0xdeadbee0 );
ok( status == STATUS_ACCESS_VIOLATION, "NtOpenProcessToken failed: %lx\n", status);
handle = (HANDLE)0xdeadbeef;
- status = NtOpenProcessToken( (HANDLE)0xdead, TOKEN_ALL_ACCESS, &handle );
+ status = pNtOpenProcessToken( (HANDLE)0xdead, TOKEN_ALL_ACCESS, &handle );
ok( status == STATUS_INVALID_HANDLE, "NtOpenProcessToken failed: %lx\n", status);
ok( !handle || broken(handle == (HANDLE)0xdeadbeef) /* vista */, "handle set %p\n", handle );
handle = (HANDLE)0xdeadbeef;
@@ -2526,7 +2526,7 @@ static void test_query_directory(void)
RtlInitUnicodeString( &string, L"\\BaseNamedObjects\\winetest" );
InitializeObjectAttributes( &attr, &string, 0, 0, NULL );
- status = NtCreateDirectoryObject( &dir, DIRECTORY_QUERY, &attr );
+ status = pNtCreateDirectoryObject( &dir, DIRECTORY_QUERY, &attr );
ok( !status, "got %#lx\n", status );
context = 0xdeadbeef;
@@ -2717,9 +2717,9 @@ static void test_query_directory(void)
ok( !memcmp( &info[1], &empty_info, sizeof(*info) ), "entry was not cleared\n" );
}
- NtClose( child1 );
- NtClose( child2 );
- NtClose( dir );
+ pNtClose( child1 );
+ pNtClose( child2 );
+ pNtClose( dir );
}
START_TEST(om)
--
2.37.1
July 28, 2022