]> source.dussan.org Git - tigervnc.git/commitdiff
Catch exceptions by reference
authorPierre Ossman <ossman@cendio.se>
Tue, 29 May 2018 13:50:08 +0000 (15:50 +0200)
committerPierre Ossman <ossman@cendio.se>
Tue, 29 May 2018 13:50:08 +0000 (15:50 +0200)
We use polymorphic exception objects, so catching by value invokes
the copy constructor and stuff that we don't really want.

common/rfb/DecodeManager.cxx
common/rfb/HTTPServer.cxx
tests/decperf.cxx
tests/encperf.cxx
win/rfb_win32/Dialog.cxx
win/rfb_win32/Registry.cxx
win/vncconfig/Connections.h
win/vncconfig/Legacy.cxx
win/winvnc/winvnc.cxx

index 774f7bb8de1f0a3b20ac666e3af9e40442780ebe..c509db09428f548317311cd6779cd4d9c22180a8 100644 (file)
@@ -277,7 +277,7 @@ void DecodeManager::DecodeThread::worker()
       entry->decoder->decodeRect(entry->rect, entry->bufferStream->data(),
                                  entry->bufferStream->length(),
                                  *entry->cp, entry->pb);
-    } catch (rdr::Exception e) {
+    } catch (rdr::Exception& e) {
       manager->setThreadException(e);
     } catch(...) {
       assert(false);
index 54becbb221609a05dc2246f7fedb66405a56de87..2895a690ab3a03e4cc5b3b48de80b6092761a67f 100644 (file)
@@ -125,7 +125,7 @@ copyStream(InStream& is, OutStream& os) {
     while (1) {
       os.writeU8(is.readU8());
     }
-  } catch (rdr::EndOfStream) {
+  } catch (rdr::EndOfStream&) {
   }
 }
 
index 3b929a4b29b62088d65cb4c0b0b4fb3ff43524af..9061cb5353af0965d8feb180b471cceca8b32c16 100644 (file)
@@ -142,7 +142,7 @@ static struct stats runTest(const char *fn)
 
   try {
     cc = new CConn(fn);
-  } catch (rdr::Exception e) {
+  } catch (rdr::Exception& e) {
     fprintf(stderr, "Failed to open rfb file: %s\n", e.str());
     exit(1);
   }
@@ -150,8 +150,8 @@ static struct stats runTest(const char *fn)
   try {
     while (true)
       cc->processMsg();
-  } catch (rdr::EndOfStream e) {
-  } catch (rdr::Exception e) {
+  } catch (rdr::EndOfStream& e) {
+  } catch (rdr::Exception& e) {
     fprintf(stderr, "Failed to run rfb file: %s\n", e.str());
     exit(1);
   }
index 7b9ff8162aa37fbb9d6b0864181d83dec4d91024..4e7038fdd5bb5c86eda4c3f2f3401533fcc7be45 100644 (file)
@@ -342,7 +342,7 @@ static struct stats runTest(const char *fn)
 
   try {
     cc = new CConn(fn);
-  } catch (rdr::Exception e) {
+  } catch (rdr::Exception& e) {
     fprintf(stderr, "Failed to open rfb file: %s\n", e.str());
     exit(1);
   }
@@ -350,8 +350,8 @@ static struct stats runTest(const char *fn)
   try {
     while (true)
       cc->processMsg();
-  } catch (rdr::EndOfStream e) {
-  } catch (rdr::Exception e) {
+  } catch (rdr::EndOfStream& e) {
+  } catch (rdr::Exception& e) {
     fprintf(stderr, "Failed to run rfb file: %s\n", e.str());
     exit(1);
   }
index c6f303c208f965c7e5324c4230848b981737df35..c9e333dd7dd3d7c024a36ad62c80533bf34f2953 100644 (file)
@@ -344,7 +344,7 @@ bool PropSheet::showPropSheet(HWND owner, bool showApply, bool showCtxtHelp, boo
     delete [] hpages; hpages = 0;
 
     return true;
-  } catch (rdr::Exception) {
+  } catch (rdr::Exception&) {
     alreadyShowing = false;
 
     std::list<PropSheetPage*>::iterator pspi;
index afbdd067123cdb6fc30267b78034d4256afee3ac..963a36a29e1b80c2946ddaf8bb25017247f1bb3e 100644 (file)
@@ -164,7 +164,7 @@ TCHAR* RegKey::getString(const TCHAR* valname) const {return getRepresentation(v
 TCHAR* RegKey::getString(const TCHAR* valname, const TCHAR* def) const {
   try {
     return getString(valname);
-  } catch(rdr::Exception) {
+  } catch(rdr::Exception&) {
     return tstrDup(def);
   }
 }
@@ -177,7 +177,7 @@ void RegKey::getBinary(const TCHAR* valname, void** data, int* length) const {
 void RegKey::getBinary(const TCHAR* valname, void** data, int* length, void* def, int deflen) const {
   try {
     getBinary(valname, data, length);
-  } catch(rdr::Exception) {
+  } catch(rdr::Exception&) {
     if (deflen) {
       *data = new char[deflen];
       memcpy(*data, def, deflen);
@@ -194,7 +194,7 @@ int RegKey::getInt(const TCHAR* valname) const {
 int RegKey::getInt(const TCHAR* valname, int def) const {
   try {
     return getInt(valname);
-  } catch(rdr::Exception) {
+  } catch(rdr::Exception&) {
     return def;
   }
 }
@@ -269,7 +269,7 @@ bool RegKey::isValue(const TCHAR* valname) const {
   try {
     TCharArray tmp(getRepresentation(valname));
     return true;
-  } catch(rdr::Exception) {
+  } catch(rdr::Exception&) {
     return false;
   }
 }
index 3d3c06cbf6f281b3747415b0319ead35a741c8d3..b3402ab487a86fdbac1b9734a98ecf4ddce0a4a9 100644 (file)
@@ -76,7 +76,7 @@ namespace rfb {
         try {
           network::TcpFilter::Pattern pat(network::TcpFilter::parsePattern(CStr(newPat.buf)));
           pattern.replaceBuf(TCharArray(network::TcpFilter::patternToStr(pat)).takeBuf());
-        } catch(rdr::Exception e) {
+        } catch(rdr::Exception& e) {
           MsgBox(NULL, TStr(e.str()), MB_ICONEXCLAMATION | MB_OK);
           return false;
         }
@@ -261,7 +261,7 @@ namespace rfb {
               (http_port != getItemInt(IDC_HTTP_PORT)) ||
               ((http_port!=0) != (isItemChecked(IDC_HTTP_ENABLE)!=0)) ||
               (rfb::Server::idleTimeout != getItemInt(IDC_IDLE_TIMEOUT));
-        } catch (rdr::Exception) {
+        } catch (rdr::Exception&) {
           return false;
         }
       }
index 7d51de81bea827f858ede4823df2bd36a3e37475..b56eb3703ccd04081fa0d7405b506458a46c6355 100644 (file)
@@ -127,7 +127,7 @@ void LegacyPage::LoadPrefs()
 
               // Finally, save the Hosts value
               regKey.setString(_T("Hosts"), TStr(newHosts.buf));
-            } catch (rdr::Exception) {
+            } catch (rdr::Exception&) {
               MsgBox(0, _T("Unable to convert AuthHosts setting to Hosts format."),
                      MB_ICONWARNING | MB_OK);
             }
@@ -148,7 +148,7 @@ void LegacyPage::LoadPrefs()
           regKey.setBool(_T("AlwaysShared"), connectPriority == 1);
           regKey.setBool(_T("NeverShared"), connectPriority == 2);
 
-        } catch(rdr::Exception) {
+        } catch(rdr::Exception&) {
         }
 
         // Open the local, default-user settings
index 5623421b92ea6b6a7cc113238a478190bd675566..43c852c48e69645379fa97980d000237d728ec12 100644 (file)
@@ -172,13 +172,13 @@ static void processParams(int argc, char** argv) {
         // Try to clean up earlier services we've had
         try {
           rfb::win32::unregisterService("WinVNC4");
-        } catch (rdr::SystemException) {
+        } catch (rdr::SystemException&) {
           // Do nothing as we might fail simply because there was no
           // service to remove
         }
         try {
           rfb::win32::unregisterService("TigerVNC Server");
-        } catch (rdr::SystemException) {
+        } catch (rdr::SystemException&) {
         }
 
         if (rfb::win32::registerService(VNCServerService::Name,