]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/except.h
Don't return a dangling pointer from wxDateTime::ParseXXX(wxCStrData).
[wxWidgets.git] / include / wx / except.h
index 0fb5ae4aff135acb7b2b3230034bdc633b0816cb..116a82efbc444bedbab2eaf73fe07889e0cd2d65 100644 (file)
 // macros working whether wxUSE_EXCEPTIONS is 0 or 1
 // ----------------------------------------------------------------------------
 
 // 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)
     #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_
 
 
 #endif // _WX_EXCEPT_H_