For React Native. These help detect errors for React Native applications.
From: Zhiyi Zhang zzhang@codeweavers.com
--- dlls/combase/combase.spec | 2 +- dlls/combase/roapi.c | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/dlls/combase/combase.spec b/dlls/combase/combase.spec index 80d0ee167e9..fb5d673db47 100644 --- a/dlls/combase/combase.spec +++ b/dlls/combase/combase.spec @@ -59,7 +59,7 @@ @ stub NdrProxyForwardingFunction31 @ stub NdrProxyForwardingFunction32 @ stub NdrOleInitializeExtension -@ stub RoFailFastWithErrorContextInternal2 +@ stdcall RoFailFastWithErrorContextInternal2(long long ptr) @ stub RoFailFastWithErrorContextInternal @ stub UpdateProcessTracing @ stdcall CLIPFORMAT_UserFree(ptr ptr) diff --git a/dlls/combase/roapi.c b/dlls/combase/roapi.c index 0a7129c6c58..18f8da44312 100644 --- a/dlls/combase/roapi.c +++ b/dlls/combase/roapi.c @@ -415,6 +415,14 @@ HRESULT WINAPI RoGetAgileReference(enum AgileReferenceOptions option, REFIID rii return S_OK; }
+/*********************************************************************** + * RoFailFastWithErrorContextInternal2 (combase.@) + */ +void WINAPI RoFailFastWithErrorContextInternal2(HRESULT error, ULONG exception_count, /* PSTOWED_EXCEPTION_INFORMATION_V2 */void *information) +{ + FIXME("%#lx, %lu, %p stub.\n", error, exception_count, information); +} + /*********************************************************************** * RoGetApartmentIdentifier (combase.@) */
From: Zhiyi Zhang zzhang@codeweavers.com
--- dlls/combase/combase.spec | 2 +- dlls/combase/roapi.c | 15 +++++++++++++++ dlls/combase/tests/roapi.c | 15 +++++++++++++++ include/roerrorapi.h | 1 + 4 files changed, 32 insertions(+), 1 deletion(-)
diff --git a/dlls/combase/combase.spec b/dlls/combase/combase.spec index fb5d673db47..73c3e7ec8ef 100644 --- a/dlls/combase/combase.spec +++ b/dlls/combase/combase.spec @@ -294,7 +294,7 @@ @ stdcall RoGetActivationFactory(ptr ptr ptr) @ stdcall RoGetAgileReference(long ptr ptr ptr) @ stdcall RoGetApartmentIdentifier(ptr) -@ stub RoGetErrorReportingFlags +@ stdcall RoGetErrorReportingFlags(ptr) @ stub RoGetMatchingRestrictedErrorInfo @ stdcall RoGetParameterizedTypeInstanceIID(long ptr ptr ptr ptr) @ stdcall RoGetServerActivatableClasses(ptr ptr ptr) diff --git a/dlls/combase/roapi.c b/dlls/combase/roapi.c index 18f8da44312..36c8a2cd8bd 100644 --- a/dlls/combase/roapi.c +++ b/dlls/combase/roapi.c @@ -533,6 +533,21 @@ HRESULT WINAPI RoSetErrorReportingFlags(UINT32 flags) return S_OK; }
+/*********************************************************************** + * RoGetErrorReportingFlags (combase.@) + */ +HRESULT WINAPI RoGetErrorReportingFlags(UINT32 *flags) +{ + FIXME("(%p): stub\n", flags); + + if (!flags) + return E_POINTER; + + *flags = RO_ERROR_REPORTING_USESETERRORINFO; + return S_OK; +} + + /*********************************************************************** * CleanupTlsOleState (combase.@) */ diff --git a/dlls/combase/tests/roapi.c b/dlls/combase/tests/roapi.c index 7606c61c165..ab5dbff6017 100644 --- a/dlls/combase/tests/roapi.c +++ b/dlls/combase/tests/roapi.c @@ -25,6 +25,7 @@
#include "initguid.h" #include "roapi.h" +#include "roerrorapi.h"
#include "wine/test.h"
@@ -537,6 +538,19 @@ static void test_RoGetAgileReference(void) } }
+static void test_RoGetErrorReportingFlags(void) +{ + UINT32 flags; + HRESULT hr; + + hr = RoGetErrorReportingFlags(NULL); + ok(hr == E_POINTER, "Got unexpected hr %#lx.\n", hr); + + hr = RoGetErrorReportingFlags(&flags); + ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); + ok(flags == RO_ERROR_REPORTING_USESETERRORINFO, "Got unexpected flag %#x.\n", flags); +} + START_TEST(roapi) { BOOL ret; @@ -546,6 +560,7 @@ START_TEST(roapi) test_implicit_mta(); test_ActivationFactories(); test_RoGetAgileReference(); + test_RoGetErrorReportingFlags();
SetLastError(0xdeadbeef); ret = DeleteFileW(L"wine.combase.test.dll"); diff --git a/include/roerrorapi.h b/include/roerrorapi.h index 4831e3afe40..ec02448e496 100644 --- a/include/roerrorapi.h +++ b/include/roerrorapi.h @@ -33,6 +33,7 @@ typedef enum } RO_ERROR_REPORTING_FLAGS;
HRESULT WINAPI GetRestrictedErrorInfo(IRestrictedErrorInfo **info); +HRESULT WINAPI RoGetErrorReportingFlags(UINT32 *flags); BOOL WINAPI RoOriginateError(HRESULT error, HSTRING message); BOOL WINAPI RoOriginateErrorW(HRESULT error, UINT max_len, const WCHAR *message); BOOL WINAPI RoOriginateLanguageException(HRESULT error, HSTRING message, IUnknown *language_exception);
From: Zhiyi Zhang zzhang@codeweavers.com
--- dlls/combase/combase.spec | 2 +- dlls/combase/roapi.c | 9 +++++++++ include/roerrorapi.h | 1 + 3 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/dlls/combase/combase.spec b/dlls/combase/combase.spec index 73c3e7ec8ef..7e2d34447a3 100644 --- a/dlls/combase/combase.spec +++ b/dlls/combase/combase.spec @@ -309,7 +309,7 @@ @ stdcall RoRegisterForApartmentShutdown(ptr ptr ptr) @ stub RoReportCapabilityCheckFailure @ stub RoReportFailedDelegate -@ stub RoReportUnhandledError +@ stdcall RoReportUnhandledError(ptr) @ stub RoResolveRestrictedErrorInfoReference @ stub RoRevokeActivationFactories @ stdcall RoSetErrorReportingFlags(long) diff --git a/dlls/combase/roapi.c b/dlls/combase/roapi.c index 36c8a2cd8bd..b11d53ff34e 100644 --- a/dlls/combase/roapi.c +++ b/dlls/combase/roapi.c @@ -524,6 +524,15 @@ BOOL WINAPI RoOriginateErrorW(HRESULT error, UINT max_len, const WCHAR *message) return FALSE; }
+/*********************************************************************** + * RoReportUnhandledError (combase.@) + */ +HRESULT WINAPI RoReportUnhandledError(IRestrictedErrorInfo *info) +{ + FIXME("(%p): stub\n", info); + return S_OK; +} + /*********************************************************************** * RoSetErrorReportingFlags (combase.@) */ diff --git a/include/roerrorapi.h b/include/roerrorapi.h index ec02448e496..8f3200c559d 100644 --- a/include/roerrorapi.h +++ b/include/roerrorapi.h @@ -37,6 +37,7 @@ HRESULT WINAPI RoGetErrorReportingFlags(UINT32 *flags); BOOL WINAPI RoOriginateError(HRESULT error, HSTRING message); BOOL WINAPI RoOriginateErrorW(HRESULT error, UINT max_len, const WCHAR *message); BOOL WINAPI RoOriginateLanguageException(HRESULT error, HSTRING message, IUnknown *language_exception); +HRESULT WINAPI RoReportUnhandledError(IRestrictedErrorInfo *info); HRESULT WINAPI RoSetErrorReportingFlags(UINT32 flags); HRESULT WINAPI SetRestrictedErrorInfo(IRestrictedErrorInfo *info);
From: Zhiyi Zhang zzhang@codeweavers.com
--- dlls/combase/roapi.c | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/dlls/combase/roapi.c b/dlls/combase/roapi.c index b11d53ff34e..e73917bb031 100644 --- a/dlls/combase/roapi.c +++ b/dlls/combase/roapi.c @@ -193,6 +193,10 @@ HRESULT WINAPI DECLSPEC_HOTPATCH RoGetActivationFactory(HSTRING classid, REFIID } IActivationFactory_Release(factory); } + else + { + ERR("Class %s not found in %s, hr %#lx.\n", wine_dbgstr_hstring(classid), debugstr_w(library), hr); + }
done: free(library);
This merge request was approved by Huw Davies.
Jinoh Kang (@iamahuman) commented about dlls/combase/roapi.c:
This seems to be a *noreturn* function. You cannot return from this function implicitly or explicitly. The only option is to terminate or crash. I think this is best left as a `@ stub`. (If you still need to trace the error, at least use something like `__fastfail(-1);`.)
On Mon Jun 9 15:31:20 2025 +0000, Jinoh Kang wrote:
I didn't notice the approval, sorry. The MSDN does stat this is a noreturn though. Let's just hope that the app doesn't go haywire after a failfast.