]> granicus.if.org Git - taglib/commitdiff
taglib: fix test build failure on powerpc/c++11 (#834)
authorSergei Trofimovich <slyfox@inbox.ru>
Tue, 19 Sep 2017 01:06:55 +0000 (02:06 +0100)
committerStephen F. Booth <me@sbooth.org>
Tue, 19 Sep 2017 01:06:55 +0000 (20:06 -0500)
powerpc is a platform with 'char' == 'unsigned char'.
As a result '-1' is not expressible in char and build fails as:

```
    # '-funsigned-char' to force test build failure on other platforms
    $ cmake .. -DBUILD_TESTS=YES -DCMAKE_CXX_FLAGS="-O2 -funsigned-char" -DCMAKE_C_FLAGS="-O2 -funsigned-char"
    ...
    $ make check
    tests/test_synchdata.cpp: In member function 'void TestID3v2SynchData::testToUIntBroken()':
    tests/test_synchdata.cpp:78:33: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
     char data[] = { 0, 0, 0, -1 };
                                 ^
```

The fix is to expliticly cast -1 to 'char'.

Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
tests/test_synchdata.cpp

index b4ec40969d25216e5f8196a93493e9ec4ddda885..08d650794582792a301a5450c79ce937296a1a7c 100644 (file)
@@ -75,8 +75,8 @@ public:
 
   void testToUIntBroken()
   {
-    char data[] = { 0, 0, 0, -1 };
-    char data2[] = { 0, 0, -1, -1 };
+    char data[] = { 0, 0, 0, (char)-1 };
+    char data2[] = { 0, 0, (char)-1, (char)-1 };
 
     CPPUNIT_ASSERT_EQUAL((unsigned int)255, ID3v2::SynchData::toUInt(ByteVector(data, 4)));
     CPPUNIT_ASSERT_EQUAL((unsigned int)65535, ID3v2::SynchData::toUInt(ByteVector(data2, 4)));
@@ -84,7 +84,7 @@ public:
 
   void testToUIntBrokenAndTooLarge()
   {
-    char data[] = { 0, 0, 0, -1, 0 };
+    char data[] = { 0, 0, 0, (char)-1, 0 };
     ByteVector v(data, 5);
 
     CPPUNIT_ASSERT_EQUAL((unsigned int)255, ID3v2::SynchData::toUInt(v));