]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/except.h
Don't cache incorrect length in wxString::DoUngetWriteBuf().
[wxWidgets.git] / include / wx / except.h
index a80bbc34f777f397db154ccddff7a0c739df6f5e..116a82efbc444bedbab2eaf73fe07889e0cd2d65 100644 (file)
@@ -5,7 +5,7 @@
 // Modified by:
 // Created:     17.09.2003
 // RCS-ID:      $Id$
-// Copyright:   (c) 2003 Vadim Zeitlin <vadim@wxwindows.org>
+// Copyright:   (c) 2003 Vadim Zeitlin <vadim@wxwidgets.org>
 // Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 // macros working whether wxUSE_EXCEPTIONS is 0 or 1
 // ----------------------------------------------------------------------------
 
-#if wxUSE_EXCEPTIONS
-    #define wxTRY try
-    #define wxCATCH_ALL(code) catch ( ... ) { code }
-#else // !wxUSE_EXCEPTIONS
+// even if the library itself was compiled with exceptions support, the user
+// code using it might be compiling with a compiler switch disabling them in
+// which cases we shouldn't use try/catch in the headers -- this results in
+// compilation errors in e.g. wx/scopeguard.h with at least g++ 4
+#if !wxUSE_EXCEPTIONS || \
+        (defined(__GNUG__) && !defined(__EXCEPTIONS))
+    #ifndef wxNO_EXCEPTIONS
+        #define wxNO_EXCEPTIONS
+    #endif
+#endif
+
+#ifdef wxNO_EXCEPTIONS
     #define wxTRY
     #define wxCATCH_ALL(code)
-#endif // wxUSE_EXCEPTIONS/!wxUSE_EXCEPTIONS
+#else // do use exceptions
+    #define wxTRY try
+    #define wxCATCH_ALL(code) catch ( ... ) { code }
+#endif // wxNO_EXCEPTIONS/!wxNO_EXCEPTIONS
 
 #endif // _WX_EXCEPT_H_