From 38493fceb39ac33e12c9c69d78f5584413b479f4 Mon Sep 17 00:00:00 2001
From: Bernd Kuhls <bernd.kuhls@t-online.de>
Date: Wed, 1 Mar 2017 10:03:40 +0100
Subject: [PATCH] Various fixes to compile libsidplay2 with newer gcc compilers

Downloaded from
http://tsubasa.googlecode.com/svn/trunk/tsubasa/sidplay2-libs/sidplay2-libs-2.1.1.diff

Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
[Thomas: adjusted to avoid the need to autoreconf, which doesn't work
properly on this package.]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 builders/hardsid-builder/src/hardsid-builder.cpp |  1 +
 builders/resid-builder/src/resid-builder.cpp     |  1 +
 builders/resid-builder/src/resid.cpp             |  1 +
 configure                                        |  2 +-
 libsidplay/configure                             |  5 +++--
 libsidplay/include/sidplay/SmartPtr.h            | 28 ++++++++++++------------
 libsidplay/include/sidplay/sidendian.h           | 18 +++++++++------
 libsidutils/include/sidplay/utils/SidUsage.h     |  2 +-
 8 files changed, 33 insertions(+), 25 deletions(-)

diff --git a/builders/hardsid-builder/src/hardsid-builder.cpp b/builders/hardsid-builder/src/hardsid-builder.cpp
index f54d0a9..9375e40 100644
--- a/builders/hardsid-builder/src/hardsid-builder.cpp
+++ b/builders/hardsid-builder/src/hardsid-builder.cpp
@@ -47,6 +47,7 @@
  ***************************************************************************/
 
 #include <stdio.h>
+#include <cstring>
 #include "config.h"
 
 #ifdef HAVE_EXCEPTIONS
diff --git a/builders/resid-builder/src/resid-builder.cpp b/builders/resid-builder/src/resid-builder.cpp
index e6e4eaa..4c7650f 100644
--- a/builders/resid-builder/src/resid-builder.cpp
+++ b/builders/resid-builder/src/resid-builder.cpp
@@ -37,6 +37,7 @@
  ***************************************************************************/
 
 #include <stdio.h>
+#include <cstring>
 
 #include "config.h"
 #ifdef HAVE_EXCEPTIONS
diff --git a/builders/resid-builder/src/resid.cpp b/builders/resid-builder/src/resid.cpp
index 8c27850..d3123c5 100644
--- a/builders/resid-builder/src/resid.cpp
+++ b/builders/resid-builder/src/resid.cpp
@@ -16,6 +16,7 @@
  *                                                                         *
  ***************************************************************************/
 
+#include <cstring>
 #include "config.h"
 
 #ifdef HAVE_EXCEPTIONS
diff --git a/configure b/configure
index 1200eaf..77948b4 100755
--- a/configure
+++ b/configure
@@ -1227,7 +1227,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 #Variables
 pwd=`pwd`
-builders='${libdir}'/sidplay/builders
+builders='${libdir}'/
 ac_configure_args="$ac_configure_args --disable-library-checks"
 
 ac_aux_dir=
diff --git a/libsidplay/configure b/libsidplay/configure
index 05a8ea6..3d93956 100755
--- a/libsidplay/configure
+++ b/libsidplay/configure
@@ -23466,8 +23466,9 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <fstream.h>
-             #include <iomanip.h>
+#include <fstream>
+             #include <iomanip>
+             using namespace std;
 int
 main ()
 {
diff --git a/libsidplay/include/sidplay/SmartPtr.h b/libsidplay/include/sidplay/SmartPtr.h
index c0cbb1a..15efd10 100644
--- a/libsidplay/include/sidplay/SmartPtr.h
+++ b/libsidplay/include/sidplay/SmartPtr.h
@@ -17,16 +17,16 @@ class SmartPtrBase_sidtt
 		doFree = bufOwner;
 		if ( bufferLen >= 1 )
 		{
-			pBufCurrent = ( bufBegin = buffer );
-			bufEnd = bufBegin + bufferLen;
-			bufLen = bufferLen;
-			status = true;
+			this->pBufCurrent = ( this->bufBegin = buffer );
+			this->bufEnd = this->bufBegin + bufferLen;
+			this->bufLen = bufferLen;
+			this->status = true;
 		}
 		else
 		{
-			pBufCurrent = ( bufBegin = ( bufEnd = 0 ));
-			bufLen = 0;
-			status = false;
+			this->pBufCurrent = ( this->bufBegin = ( this->bufEnd = 0 ));
+			this->bufLen = 0;
+			this->status = false;
 		}
 	}
 	
@@ -211,16 +211,16 @@ class SmartPtr_sidtt : public SmartPtrBase_sidtt<T>
 	{
 		if ( bufferLen >= 1 )
 		{
-			pBufCurrent = ( bufBegin = buffer );
-			bufEnd = bufBegin + bufferLen;
-			bufLen = bufferLen;
-			status = true;
+			this->pBufCurrent = ( this->bufBegin = buffer );
+			this->bufEnd = this->bufBegin + bufferLen;
+			this->bufLen = bufferLen;
+			this->status = true;
 		}
 		else
 		{
-			pBufCurrent = bufBegin = bufEnd = 0;
-			bufLen = 0;
-			status = false;
+			this->pBufCurrent = this->bufBegin = this->bufEnd = 0;
+			this->bufLen = 0;
+			this->status = false;
 		}
 	}
 };
diff --git a/libsidplay/include/sidplay/sidendian.h b/libsidplay/include/sidplay/sidendian.h
index 9fa8582..6115282 100644
--- a/libsidplay/include/sidplay/sidendian.h
+++ b/libsidplay/include/sidplay/sidendian.h
@@ -16,6 +16,10 @@
  ***************************************************************************/
 /***************************************************************************
  *  $Log: sidendian.h,v $
+ *  Revision 1.6  2005/11/20 11:02:06  s_a_white
+ *  Work around for bug in gcc 4 (optimiser breaks if variable never has a
+ *  direct assignment).
+ *
  *  Revision 1.5  2001/07/03 22:44:13  s_a_white
  *  Added endian_16 to convert a 16 bit value to an array of 8s.
  *
@@ -141,7 +145,7 @@ inline void endian_16swap8 (uint_least16_t &word)
 // Convert high-byte and low-byte to 16-bit word.
 inline uint_least16_t endian_16 (uint8_t hi, uint8_t lo)
 {
-    uint_least16_t word;
+    uint_least16_t word = 0;
     endian_16lo8 (word, lo);
     endian_16hi8 (word, hi);
     return word;
@@ -165,7 +169,7 @@ inline void endian_16 (uint8_t ptr[2], uint_least16_t word)
 
 inline void endian_16 (char ptr[2], uint_least16_t word)
 {
-	endian_16 ((uint8_t *) ptr, word);
+    endian_16 ((uint8_t *) ptr, word);
 }
 
 // Convert high-byte and low-byte to 16-bit little endian word.
@@ -334,7 +338,7 @@ inline void endian_32swap16 (uint_least32_t &dword)
 // Swap word endian.
 inline void endian_32swap8 (uint_least32_t &dword)
 {
-    uint_least16_t lo, hi;
+    uint_least16_t lo = 0, hi = 0;
     lo = endian_32lo16 (dword);
     hi = endian_32hi16 (dword);
     endian_16swap8 (lo);
@@ -346,8 +350,8 @@ inline void endian_32swap8 (uint_least32_t &dword)
 // Convert high-byte and low-byte to 32-bit word.
 inline uint_least32_t endian_32 (uint8_t hihi, uint8_t hilo, uint8_t hi, uint8_t lo)
 {
-    uint_least32_t dword;
-    uint_least16_t word;
+    uint_least32_t dword = 0;
+    uint_least16_t word  = 0;
     endian_32lo8  (dword, lo);
     endian_32hi8  (dword, hi);
     endian_16lo8  (word,  hilo);
@@ -374,7 +378,7 @@ inline void endian_little32 (uint8_t ptr[4], uint_least32_t dword)
     defined(SID_WORDS_LITTLEENDIAN)
     *((uint_least32_t *) ptr) = dword;
 #else
-    uint_least16_t word;
+    uint_least16_t word = 0;
     ptr[0] = endian_32lo8  (dword);
     ptr[1] = endian_32hi8  (dword);
     word   = endian_32hi16 (dword);
@@ -401,7 +405,7 @@ inline void endian_big32 (uint8_t ptr[4], uint_least32_t dword)
     defined(SID_WORDS_BIGENDIAN)
     *((uint_least32_t *) ptr) = dword;
 #else
-    uint_least16_t word;
+    uint_least16_t word = 0;
     word   = endian_32hi16 (dword);
     ptr[1] = endian_16lo8  (word);
     ptr[0] = endian_16hi8  (word);
diff --git a/libsidutils/include/sidplay/utils/SidUsage.h b/libsidutils/include/sidplay/utils/SidUsage.h
index 2afb0f3..0496eea 100755
--- a/libsidutils/include/sidplay/utils/SidUsage.h
+++ b/libsidutils/include/sidplay/utils/SidUsage.h
@@ -33,7 +33,7 @@ struct sid2_usage_t: public sid_usage_t
     uint_least16_t length;  // usage scan length
 
     // Copy common parts of basic usage to extended usage.
-    sid2_usage_t &sid2_usage_t::operator= (const sid_usage_t &usage)
+    sid2_usage_t &operator= (const sid_usage_t &usage)
     {
         *((sid_usage_t *) this) = usage;
         return *this;
-- 
2.7.4

