On Thu Jul 25 21:44:51 2024 +0000, Elizabeth Figura wrote:
So native also has that null-deref length_is clause? I guess that's a
bug in native, then. Better do the same, wouldn't be the first blatant bug Wine reproduces. That's what RemoteNext is for. RPC doesn't let that be NULL, but the API does. See IEnumShellItems_Next_Proxy() in dlls/actxprxy/usrmarshal.c. This merge request will need to essentially copy-paste that implementation in the same file. RemoteNext() isn't exactly a real method and doesn't need to be implemented per se. It's basically the internal RPC version of Next() that has RPC-friendly parameters.
Ok, let's see if I'm on the same page here. On `include/shobjidl.idl`, aside of the annotations on `Next()`, I should add the RemoteNext method like this? `[call_as(Next)] HRESULT RemoteNext( [in] ULONG celt, [in] REFIID riid, [out, size_is(celt), length_is(*pceltFetched), iid_is(riid)] void **rgelt, [out] ULONG *pceltFetched);`
This merge request will need to essentially copy-paste that implementation in the same file.
So I need to an `IEnumObjects_Next_Proxy()` method based on `IEnumShellItems_Next_Proxy()` on dlls/actxprxy/usrmarshal.c?