From 795258ff738e51287628289e4f82f654afdc6fc2 Mon Sep 17 00:00:00 2001
From: g0dil <g0dil@wiback.org>
Date: Mon, 16 Oct 2006 10:56:04 +0000
Subject: [PATCH] Fixes for g++-4

---
 Packets/PacketRegistry.ih  | 1 +
 Packets/ParserBase.ih      | 6 +++---
 Packets/ParserBase.test.cc | 4 ++++
 Packets/typeidvalue.hh     | 1 +
 4 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/Packets/PacketRegistry.ih b/Packets/PacketRegistry.ih
index 2a752b2c6..f01450655 100644
--- a/Packets/PacketRegistry.ih
+++ b/Packets/PacketRegistry.ih
@@ -35,6 +35,7 @@ namespace pkf {
 namespace impl {
 
     struct PkReg_Entry {
+        virtual ~PkReg_Entry() {}
         virtual void registerInterpreter(Packet const * p, 
                                          Packet::iterator b, Packet::iterator e) = 0;
         virtual Packet::ptr reinterpret(Packet * p) = 0;
diff --git a/Packets/ParserBase.ih b/Packets/ParserBase.ih
index 3cb5eb129..924189ac0 100644
--- a/Packets/ParserBase.ih
+++ b/Packets/ParserBase.ih
@@ -45,11 +45,11 @@ namespace impl {
             Parser_traits_fixed_size_check(&Parser::bytes))-sizeof(Parser_traits_sentinel<1>);
     };
 
-    template <class T>
-    Parser_traits_sentinel<2> Parser_traits_fixed_size_check(T);
+    template <class R>
+    Parser_traits_sentinel<2> Parser_traits_fixed_size_check(R (*)());
 
     template <class R,class T>
-    Parser_traits_sentinel<1> Parser_traits_fixed_size_check(R (T::*)());
+    Parser_traits_sentinel<1> Parser_traits_fixed_size_check(R (T::*)() const);
 
     template <class Parser, class Iterator>
     bool check(Iterator const & b, Iterator const & e, ParserBase *);
diff --git a/Packets/ParserBase.test.cc b/Packets/ParserBase.test.cc
index dca6b77b2..b1a898304 100644
--- a/Packets/ParserBase.test.cc
+++ b/Packets/ParserBase.test.cc
@@ -28,6 +28,7 @@
 // Custom includes
 #include "ParserBase.hh"
 #include "Packet.hh"
+#include <boost/static_assert.hpp>
 
 #include <boost/test/auto_unit_test.hpp>
 #include <boost/test/test_tools.hpp>
@@ -85,6 +86,9 @@ namespace {
 
 BOOST_AUTO_UNIT_TEST(parserBase_construction)
 {
+    BOOST_STATIC_ASSERT( pkf::Parser_traits< Parse_Test<> >::fixed_size );
+    BOOST_STATIC_ASSERT( ! pkf::Parser_traits< Parse_Test2<> >::fixed_size );
+
     BOOST_CHECK_EQUAL( pkf::min_bytes< Parse_Test<int> >(), 14u );
     BOOST_CHECK( pkf::check< Parse_Test<int> >(0,14) );
     BOOST_CHECK( ! pkf::check< Parse_Test<int> >(2,15) );
diff --git a/Packets/typeidvalue.hh b/Packets/typeidvalue.hh
index 425c14fbb..bb03dbed3 100644
--- a/Packets/typeidvalue.hh
+++ b/Packets/typeidvalue.hh
@@ -68,6 +68,7 @@ namespace lib {
         template <class Type> TypeIdValue(Type *);
 
         struct Value {
+            virtual ~Value() {}
             virtual std::type_info const & id() = 0;
             virtual Value * clone() = 0;
         };
-- 
GitLab