diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake index 97654f91..d436e358 100644 --- a/ConfigureChecks.cmake +++ b/ConfigureChecks.cmake @@ -66,65 +66,65 @@ endif() check_cxx_source_compiles(" #include - int main() { + int main() { std::atomic x; x.fetch_add(1); x.fetch_sub(1); - return 0; + return 0; } " HAVE_STD_ATOMIC) if(NOT HAVE_STD_ATOMIC) check_cxx_source_compiles(" #include - int main() { + int main() { boost::atomic x(1); x.fetch_add(1); x.fetch_sub(1); - return 0; + return 0; } " HAVE_BOOST_ATOMIC) if(NOT HAVE_BOOST_ATOMIC) check_cxx_source_compiles(" - int main() { + int main() { volatile int x; __sync_add_and_fetch(&x, 1); int y = __sync_sub_and_fetch(&x, 1); - return 0; + return 0; } " HAVE_GCC_ATOMIC) if(NOT HAVE_GCC_ATOMIC) check_cxx_source_compiles(" #include - int main() { + int main() { volatile int32_t x; OSAtomicIncrement32Barrier(&x); int32_t y = OSAtomicDecrement32Barrier(&x); - return 0; + return 0; } " HAVE_MAC_ATOMIC) if(NOT HAVE_MAC_ATOMIC) check_cxx_source_compiles(" #include - int main() { + int main() { volatile LONG x; InterlockedIncrement(&x); LONG y = InterlockedDecrement(&x); - return 0; + return 0; } " HAVE_WIN_ATOMIC) if(NOT HAVE_WIN_ATOMIC) check_cxx_source_compiles(" #include - int main() { + int main() { volatile int x; __sync_add_and_fetch(&x, 1); int y = __sync_sub_and_fetch(&x, 1); - return 0; + return 0; } " HAVE_IA64_ATOMIC) endif() @@ -135,26 +135,26 @@ endif() # Determine which kind of byte swap functions your compiler supports. -# GCC's __builtin_bswap* should be checked individually +# GCC's __builtin_bswap* should be checked individually # because some of them can be missing depends on the GCC version. check_cxx_source_compiles(" int main() { __builtin_bswap16(0); - return 0; + return 0; } " HAVE_GCC_BYTESWAP_16) check_cxx_source_compiles(" int main() { __builtin_bswap32(0); - return 0; + return 0; } " HAVE_GCC_BYTESWAP_32) check_cxx_source_compiles(" int main() { __builtin_bswap64(0); - return 0; + return 0; } " HAVE_GCC_BYTESWAP_64) @@ -165,7 +165,7 @@ if(NOT HAVE_GCC_BYTESWAP_16 OR NOT HAVE_GCC_BYTESWAP_32 OR NOT HAVE_GCC_BYTESWAP __bswap_16(0); __bswap_32(0); __bswap_64(0); - return 0; + return 0; } " HAVE_GLIBC_BYTESWAP) @@ -176,7 +176,7 @@ if(NOT HAVE_GCC_BYTESWAP_16 OR NOT HAVE_GCC_BYTESWAP_32 OR NOT HAVE_GCC_BYTESWAP _byteswap_ushort(0); _byteswap_ulong(0); _byteswap_uint64(0); - return 0; + return 0; } " HAVE_MSC_BYTESWAP) @@ -187,7 +187,7 @@ if(NOT HAVE_GCC_BYTESWAP_16 OR NOT HAVE_GCC_BYTESWAP_32 OR NOT HAVE_GCC_BYTESWAP OSSwapInt16(0); OSSwapInt32(0); OSSwapInt64(0); - return 0; + return 0; } " HAVE_MAC_BYTESWAP) @@ -198,7 +198,7 @@ if(NOT HAVE_GCC_BYTESWAP_16 OR NOT HAVE_GCC_BYTESWAP_32 OR NOT HAVE_GCC_BYTESWAP swap16(0); swap32(0); swap64(0); - return 0; + return 0; } " HAVE_OPENBSD_BYTESWAP) endif() diff --git a/taglib/mp4/mp4atom.cpp b/taglib/mp4/mp4atom.cpp index 7b87a479..b12f9459 100644 --- a/taglib/mp4/mp4atom.cpp +++ b/taglib/mp4/mp4atom.cpp @@ -23,6 +23,10 @@ * http://www.mozilla.org/MPL/ * ***************************************************************************/ +#ifdef HAVE_CONFIG_H +#include +#endif + #include #include #include "mp4atom.h" @@ -50,20 +54,25 @@ MP4::Atom::Atom(File *file) length = header.toUInt(); - if (length == 1) { + if(length == 1) { const long long longLength = file->readBlock(8).toLongLong(); - if (longLength >= 8 && longLength <= 0xFFFFFFFF) { - // The atom has a 64-bit length, but it's actually a 32-bit value - length = (long)longLength; + if(sizeof(long) == sizeof(long long)) { + length = longLength; } else { + if(longLength <= 0xFFFFFFFF) { + // The atom has a 64-bit length, but it's actually a 32-bit value + length = (long)longLength; + } + else { debug("MP4: 64-bit atoms are not supported"); length = 0; file->seek(0, File::End); return; + } } } - if (length < 8) { + if(length < 8) { debug("MP4: Invalid atom size"); length = 0; file->seek(0, File::End);