From ab37a858eb9f1ebc632f8cf8f75f65e0325ab0aa Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Sat, 21 Jan 2023 10:33:07 +0100 Subject: [PATCH] vbox: Introduce vboxUniformedPFN::ClearException() The ClearException() method clears the latest exception inside of VirtualBox. This needed because obtaining an exception via GetException() does not clear it. Signed-off-by: Michal Privoznik Reviewed-by: Martin Kletzander --- src/vbox/vbox_tmpl.c | 6 ++++++ src/vbox/vbox_uniformed_api.h | 1 + 2 files changed, 7 insertions(+) diff --git a/src/vbox/vbox_tmpl.c b/src/vbox/vbox_tmpl.c index d95a2d2dc6..3db8557c53 100644 --- a/src/vbox/vbox_tmpl.c +++ b/src/vbox/vbox_tmpl.c @@ -486,6 +486,11 @@ static HRESULT _pfnGetException(PCVBOXXPCOM pFuncs, IErrorInfo **ppException) return pFuncs->pfnGetException(ppException); } +static HRESULT _pfnClearException(PCVBOXXPCOM pFuncs) +{ + return pFuncs->pfnClearException(); +} + static void _vboxIIDInitialize(vboxIID *iid) { memset(iid, 0, sizeof(vboxIID)); @@ -2224,6 +2229,7 @@ static vboxUniformedPFN _UPFN = { .Utf16ToUtf8 = _pfnUtf16ToUtf8, .Utf8ToUtf16 = _pfnUtf8ToUtf16, .GetException = _pfnGetException, + .ClearException = _pfnClearException, }; static vboxUniformedIID _UIID = { diff --git a/src/vbox/vbox_uniformed_api.h b/src/vbox/vbox_uniformed_api.h index 9d55bd0dd7..e9e3592b0f 100644 --- a/src/vbox/vbox_uniformed_api.h +++ b/src/vbox/vbox_uniformed_api.h @@ -110,6 +110,7 @@ typedef struct { int (*Utf16ToUtf8)(PCVBOXXPCOM pFuncs, const PRUnichar *pwszString, char **ppszString); int (*Utf8ToUtf16)(PCVBOXXPCOM pFuncs, const char *pszString, PRUnichar **ppwszString); HRESULT (*GetException)(PCVBOXXPCOM pFuncs, nsIException **ppException); + HRESULT (*ClearException)(PCVBOXXPCOM pFuncs); } vboxUniformedPFN; /* Functions for vboxIID */ -- 2.47.2