changeset 12545:2c66ccb79517 draft

(svn r16983) -Change: work around a bogus GCC 4.4+ warning that can't be disabled
author rubidium <rubidium@openttd.org>
date Wed, 29 Jul 2009 20:24:48 +0000
parents d89416689463
children 53d056f3a161
files src/misc/blob.hpp src/misc/dbg_helpers.cpp
diffstat 2 files changed, 10 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/misc/blob.hpp
+++ b/src/misc/blob.hpp
@@ -58,6 +58,10 @@
 		CHdr       *m_pHdr_1;   ///< ptr just after the CHdr holding m_size and m_max_size
 	} ptr_u;
 
+private:
+	/** Just to silence an unsilencable GCC 4.4+ warning */
+	static const CHdr hdrEmpty[];
+
 public:
 	static const bsize_t Ttail_reserve = 4; ///< four extra bytes will be always allocated and zeroed at the end
 
@@ -96,8 +100,7 @@
 	 *  both m_size and m_max_size containing zero */
 	FORCEINLINE void InitEmpty()
 	{
-		static CHdr hdrEmpty[] = {{0, 0}, {0, 0}};
-		ptr_u.m_pHdr_1 = &hdrEmpty[1];
+		ptr_u.m_pHdr_1 = const_cast<CHdr *>(&CBlobBaseSimple::hdrEmpty[1]);
 	}
 
 	/** initialize blob by attaching it to the given header followed by data */
@@ -297,6 +300,9 @@
 	/** all deallocations should happen here */
 	static FORCEINLINE void RawFree(CHdr *p)
 	{
+		/* Just to silence an unsilencable GCC 4.4+ warning */
+		assert(p != CBlobBaseSimple::hdrEmpty);
+
 		free(p);
 	}
 	/** fixing the four bytes at the end of blob data - useful when blob is used to hold string */
--- a/src/misc/dbg_helpers.cpp
+++ b/src/misc/dbg_helpers.cpp
@@ -167,3 +167,5 @@
 	m_cur_struct.pop();
 }
 
+/** Just to silence an unsilencable GCC 4.4+ warning */
+/* static */ const CBlobBaseSimple::CHdr CBlobBaseSimple::hdrEmpty[] = {{0, 0}, {0, 0}};