From 477ee235e992f0121c082dd1a2da6758ea81ef97 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jakub=20Klinkovsk=C3=BD?= <klinkovsky@mmg.fjfi.cvut.cz>
Date: Fri, 1 Jul 2022 21:36:52 +0200
Subject: [PATCH] Added workaround for a bug in GCC 12 to SharedPointerHost.h

---
 src/TNL/Pointers/SharedPointerHost.h | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/src/TNL/Pointers/SharedPointerHost.h b/src/TNL/Pointers/SharedPointerHost.h
index 27945b0587..a71fd36872 100644
--- a/src/TNL/Pointers/SharedPointerHost.h
+++ b/src/TNL/Pointers/SharedPointerHost.h
@@ -440,10 +440,21 @@ protected:
    free()
    {
       if( this->pd ) {
+         // As far as we know, GCC 12.0.0 and 12.1.0 issue a false-positive use-after-free warning
+         // These bug reports may be related:
+         // - https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105327
+         // - https://bugzilla.redhat.com/show_bug.cgi?id=2047715
+#if defined( __GNUC__ ) && ! defined( __clang__ ) && ! defined( __NVCC__ )
+   #pragma GCC diagnostic push
+   #pragma GCC diagnostic ignored "-Wuse-after-free"
+#endif
          if( ! --this->pd->counter ) {
             delete this->pd;
             this->pd = nullptr;
          }
+#if defined( __GNUC__ ) && ! defined( __clang__ ) && ! defined( __NVCC__ )
+   #pragma GCC diagnostic pop
+#endif
       }
    }
 
-- 
GitLab