From c31e5dfc55ce6f6f2761076881c90d57c4b99b70 Mon Sep 17 00:00:00 2001
From: Friedemann Kleint <Friedemann.Kleint@digia.com>
Date: Fri, 18 Jan 2013 12:10:16 +0100
Subject: [PATCH] Check return values of CoInitialize().

Change-Id: I97e94517e1fb1af89d992db9c1a8c15aba5f8425
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
---
 src/activeqt/control/qaxservermain.cpp | 28 ++++++++++++++------------
 tools/dumpcpp/main.cpp                 |  5 ++++-
 tools/dumpdoc/main.cpp                 |  5 ++++-
 3 files changed, 23 insertions(+), 15 deletions(-)

diff --git a/src/activeqt/control/qaxservermain.cpp b/src/activeqt/control/qaxservermain.cpp
index c79a9e17..f6f75024 100644
--- a/src/activeqt/control/qaxservermain.cpp
+++ b/src/activeqt/control/qaxservermain.cpp
@@ -252,19 +252,21 @@ EXTERN_C int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR,
     }
     
     if (run) {
-        HRESULT hRes = CoInitialize(0);
-
-        int argc;
-        QVector<char*> argv(8);
-        qWinMain(hInstance, hPrevInstance, unprocessed.data(), nShowCmd, argc, argv);
-        qAxInit();
-        if (runServer)
-            QAxFactory::startServer();
-        nRet = ::main(argc, argv.data());
-        QAxFactory::stopServer();
-        qAxCleanup();
-        CoUninitialize();
-        
+        if (SUCCEEDED(CoInitialize(0))) {
+            int argc;
+            QVector<char*> argv(8);
+            qWinMain(hInstance, hPrevInstance, unprocessed.data(), nShowCmd, argc, argv);
+            qAxInit();
+            if (runServer)
+                QAxFactory::startServer();
+            nRet = ::main(argc, argv.data());
+            QAxFactory::stopServer();
+            qAxCleanup();
+            CoUninitialize();
+        } else {
+            qErrnoWarning("CoInitialize() failed.");
+            nRet = -1;
+        }
     }
     
     return nRet;
diff --git a/tools/dumpcpp/main.cpp b/tools/dumpcpp/main.cpp
index a7a44b16..6d3dd54b 100644
--- a/tools/dumpcpp/main.cpp
+++ b/tools/dumpcpp/main.cpp
@@ -1494,7 +1494,10 @@ int main(int argc, char **argv)
 {
     qax_dispatchEqualsIDispatch = false;
 
-    CoInitialize(0);
+    if (FAILED(CoInitialize(0))) {
+        qErrnoWarning("CoInitialize() failed.");
+        return -1;
+    }
 
     uint category = DefaultObject;
 
diff --git a/tools/dumpdoc/main.cpp b/tools/dumpdoc/main.cpp
index bb3bcf17..6996e157 100644
--- a/tools/dumpdoc/main.cpp
+++ b/tools/dumpdoc/main.cpp
@@ -48,7 +48,10 @@ QT_USE_NAMESPACE
 
 int main(int argc, char **argv)
 {
-    CoInitialize(0);
+    if (FAILED(CoInitialize(0))) {
+        qErrnoWarning("CoInitialize() failed.");
+        return -1;
+    }
 
     enum State {
         Default = 0,
-- 
GitLab