The function is defined as follows:

    namespace _com_util {
      inline void CheckError(HRESULT hr) throw() {
        if(FAILED(hr)) { _com_issue_error(hr); }
      }
    }

but _com_issue_error is defined as:

    inline void _com_issue_error(HRESULT hr) {
    #if __EXCEPTIONS
        throw _com_error(hr);
    #else
        /* This is designed to use exceptions. If exceptions are disabled, 
there is not much we can do here. */
        __debugbreak();
    #endif
    }

so actually calling it with a failed HRESULT crashes the program. I
think the empty exception specification should simply be dropped.

See https://bugs.debian.org/816427

Reported-by: Sam Morris <s...@robots.org.uk>
Signed-off-by: Stephen Kitt <st...@sk2.org>
---
 mingw-w64-headers/include/comutil.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mingw-w64-headers/include/comutil.h 
b/mingw-w64-headers/include/comutil.h
index f6d7adcf..e090067c 100644
--- a/mingw-w64-headers/include/comutil.h
+++ b/mingw-w64-headers/include/comutil.h
@@ -44,7 +44,7 @@ class _bstr_t;
 class _variant_t;
 
 namespace _com_util {
-  inline void CheckError(HRESULT hr) throw() {
+  inline void CheckError(HRESULT hr) {
     if(FAILED(hr)) { _com_issue_error(hr); }
   }
 }
-- 
2.20.1



_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to