From 38493fceb39ac33e12c9c69d78f5584413b479f4 Mon Sep 17 00:00:00 2001 From: Bernd Kuhls 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 [Thomas: adjusted to avoid the need to autoreconf, which doesn't work properly on this package.] Signed-off-by: Thomas Petazzoni --- 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 +#include #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 +#include #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 #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 - #include +#include + #include + 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 { 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