http://bugs.winehq.org/show_bug.cgi?id=14639
Summary: ngen.exe from .NET 2.0 show exception E_INVALIDARG when trying to compile an assembly Product: Wine Version: 1.1.2 Platform: Other OS/Version: other Status: NEW Keywords: dotnet Severity: normal Priority: P2 Component: oleaut32 AssignedTo: wine-bugs@winehq.org ReportedBy: mikolaj.zalewski@gmail.com
Created an attachment (id=15047) --> (http://bugs.winehq.org/attachment.cgi?id=15047) oleaut32 patch
To reproduce:
wine ngen asiduvaoisduvbaios
The expected behaviour is HRESULT 0x80070002 (file not found), while we get E_INVALIDARG. The E_INVALIDARD is because of some garbage provided to SetPriorityClass.
There is a bug in either oleaut32's serialize_param or deserialize_param - serialize_param treats VT_USERDEFINED/TKIND_RECORD as inline data, while deserialize_param makes of it a pointer to an allocated buffer. As the VT_PTR is absent, I would except the first is correct (also it seems this is what ngen is expecting). The attached patch makes the class sent to SetPriorityClass constant - always 0xffffffff.
This is still incorrect. The native SetPriotityClass ignores incorrect flags, so maybe we should just return TRUE, but it could be another bug e.g. in oleaut32.