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 <mpriv...@redhat.com>
---
 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 ba7dc34a6b..a0c6a8f287 100644
--- a/src/vbox/vbox_tmpl.c
+++ b/src/vbox/vbox_tmpl.c
@@ -488,6 +488,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));
@@ -2243,6 +2248,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 465a7877d9..2d61ed97fa 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.39.1

Reply via email to