X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/822fc19ef0224d2a257bf01de60a5f5b8506b857..fd91cec1417a06b5e0ee09b3e677da5cc73ea0a3:/include/wx/scopeguard.h diff --git a/include/wx/scopeguard.h b/include/wx/scopeguard.h index b8152964a0..45dee8caef 100644 --- a/include/wx/scopeguard.h +++ b/include/wx/scopeguard.h @@ -51,8 +51,14 @@ #else +#if !defined(__GNUC__) || wxCHECK_GCC_VERSION(2, 95) +// namespace support was first implemented in gcc-2.95, +// so avoid using it for older versions. namespace wxPrivate { +#else +#define wxPrivate +#endif // in the original implementation this was a member template function of // ScopeGuardImplBase but gcc 2.8 which is still used for OS/2 doesn't // support member templates and so we must make it global @@ -75,7 +81,9 @@ namespace wxPrivate void Use(const T& WXUNUSED(t)) { } +#if !defined(__GNUC__) || wxCHECK_GCC_VERSION(2, 95) } // namespace wxPrivate +#endif #define wxPrivateOnScopeExit(n) wxPrivate::OnScopeExit(n) #define wxPrivateUse(n) wxPrivate::Use(n) @@ -336,7 +344,7 @@ typedef const wxScopeGuardImplBase& wxScopeGuard; wxScopeGuard n = wxMakeObjGuard(o, m); \ wxPrivateUse(n) #define wxON_BLOCK_EXIT_OBJ0(o, m) \ - wxON_BLOCK_EXIT_OBJ0_IMPL(wxGuardName, o, m) + wxON_BLOCK_EXIT_OBJ0_IMPL(wxGuardName, o, &m) #define wxON_BLOCK_EXIT1_IMPL(n, f, p1) \ wxScopeGuard n = wxMakeGuard(f, p1); \ @@ -348,7 +356,7 @@ typedef const wxScopeGuardImplBase& wxScopeGuard; wxScopeGuard n = wxMakeObjGuard(o, m, p1); \ wxPrivateUse(n) #define wxON_BLOCK_EXIT_OBJ1(o, m, p1) \ - wxON_BLOCK_EXIT_OBJ1_IMPL(wxGuardName, o, m, p1) + wxON_BLOCK_EXIT_OBJ1_IMPL(wxGuardName, o, &m, p1) #define wxON_BLOCK_EXIT2_IMPL(n, f, p1, p2) \ wxScopeGuard n = wxMakeGuard(f, p1, p2); \ @@ -360,6 +368,6 @@ typedef const wxScopeGuardImplBase& wxScopeGuard; wxScopeGuard n = wxMakeObjGuard(o, m, p1, p2); \ wxPrivateUse(n) #define wxON_BLOCK_EXIT_OBJ2(o, m, p1, p2) \ - wxON_BLOCK_EXIT_OBJ2_IMPL(wxGuardName, o, m, p1, p2) + wxON_BLOCK_EXIT_OBJ2_IMPL(wxGuardName, o, &m, p1, p2) #endif // _WX_SCOPEGUARD_H_